Skip to content

jmptrader/libuq

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UQ Cluster library

UQ is a distributed persistent message queue. Libuq is the programing language bindings for uq cluster.

Progress

Name Language Author
UQ HTTP built-in
gouq Go official
juq Java sumory
phpuq PHP coming soon
pyuq Python coming soon
... ... TODO

gouq

Gouq is the golang library for uq cluster. To use gouq, import the github package in your program:

import (
	"github.com/buaazp/libuq/gouq"
)

Then new a client:

// for single uq instance
c, err = uq.NewClient(protocol, ip, port)
// for multi instances in a cluster
c, err = uq.NewClientEtcd(protocol, etcdServers, cluster)

And use the queue methods like:

err = c.Add(topic, line, recycle)
err = c.Push(topic, value)
id, data, err := c.Pop(key)
err = c.Del(id)

Gouq library will automatically choose the instance online to deal with the queue methods. You needn't to worry about the connections and etcd results.

For more information, take a look at Godoc.org:

https://godoc.org/github.com/buaazp/libuq/gouq

You can also read the sample code in examples/go-uq.go. To run the sample:

go build examples/go-uq.go
./go-uq -h
Usage of ./go-uq:
  -cluster="uq": cluster name in etcd
  -etcd="": etcd service location
  -ip="127.0.0.1": uq server ip address
  -line="x": line name
  -port=8808: uq server port
  -protocol="redis": frontend interface(redis, mc, http)
  -topic="foo": topic name

juq

Juq is the Java library of uq cluster, Juq use redis client - aredis, and modify it to support commands from uq

//package org.aredis.cache
public enum RedisCommand {

    //###### modified by sumory for uq ######
    ADD("kk"), DEL("k"),
    //DEL("k@k", false, false, IntegerShardedResultHandler.instance),
    //###### modified by sumory for uq ######
    ...
}

Goto the tests for usage detail.

Need Contributions

Implement all language bindings for uq cluster is a huge work to me. I really need your contributions to build a full-language uq cluster library. If you are good at some languages, php, python or any other, please make a PR to give some help.

About

The client library for uq cluster.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 92.3%
  • Go 7.7%