edisque
April 30, 2015 ยท View on GitHub
Erlang Disque client. Disque is an in-memory, distributed job queue.
Example
Example:
git clone git://github.com/nacmartin/edisque.git
cd edisque
make
erl -pa ebin/ deps/**/ebin/
{ok, C} = edisque:start_link().
edisque:add_job(C, <<"queue">>, <<"body">>, 0).
{ok, Resp} = edisque:get_job(C, [<<"queue">>]).
JobId = lists:nth(2, lists:nth(1, Resp)).
edisque:ack_job(C, [JobId]).
Host cycling
Every time edisque runs GETJOB, edisque updates statistics of the Disque nodes that are producing the jobs that edisque is consuming. When a number of jobs is consumed (default is 1000), it will check the statistics to see if it can connect to a better node, and will do so if possible.
For more information about this behaviour, check the Disque documentation.
To configure the number of jobs consumed in a cycle, start edisque with edisque:start_link(Hosts, Cycle), where Hosts is a list of tuples of the form {IP, Port} as in {"127.0.0.1", 7711}, and Cycle is the number of jobs consumed before looking for a better client.
If Cycle is 0, this feature is disabled.
Running tests
To run the tests run make eunit.
In order to test cycling, it is expected to have two edisque nodes running in a cluster listening to 127.0.01:7711 and 127.0.0.1:7712.
Dependencies
Edisque uses eredis as base Redis client.