diff options
-rw-r--r-- | README | 114 | ||||
-rw-r--r-- | lib/presque.pm | 2 |
2 files changed, 26 insertions, 90 deletions
diff --git a/README b/README index 0db2272..0c29bb0 100644 --- a/README +++ b/README @@ -1,14 +1,23 @@ NAME - presque - a redis based message queue + presque - a redis/tatsumaki based message queue SYNOPSIS DESCRIPTION - presque is a message queue system based on Tatsumaki and Redis. + presque is a persistent job queue that uses Redis for storage and + Tatsumaki for the interface between workers and Redis. + + presque implement a REST interface for communications, and jobs are JSON + data structure. + + Workers can be written in any language as long as they implement the + REST interface. A complete worker exists for Perl presque::worker. Some + examples in other languages can be found in the eg directory. The functionalities are inspired by RestMQ - <http://github.com/gleicon/restmq> and the name by resque + <http://github.com/gleicon/restmq> and resque <http://github.com/defunkt/resque>. + HTTP ROUTES The following HTTP routes are available: GET /q/queuename @@ -23,9 +32,8 @@ DESCRIPTION DELETE /q/queuename purge and delete the queue - GET /status/(queuename) - If no queuename is given, return a list of queues. If queuename is - given, return the size of the queue and the current policy. + GET /status/ + informations about a queue. GET /j/queuename return some basic information about a queue. @@ -38,98 +46,26 @@ DESCRIPTION POST /control/queuename change the status of the queue. - GET /w/(?[worker_id|queue_name]) - If no argument is given, return some stats about workers. If a - worker_id is given, return stats about the specific worker. If a - queue name is given return stats about the workers on this queue. + GET /w/ + some statisctics about a worker - POST /w/queue_name?worker_id + POST /w/queuename register a worker on a queue. - DELETE /w/queue_name?worker_id + DELETE /w/queue_name unregister a worker on a queue. -USAGE - WORKERS INTERFACE - It's possible for a worker to register itself against presque. This is - not required. The main purpose of registering workers is to collect - informations about your workers : what are they doing right now, how - many jobs have they failed, how many jobs have they processed, ... - - REGISTER A WORKER - To register a worker, a POST request must be made. The content of the - POST must be a JSON structure that contains the key worker_id. - - curl -H 'Content-Type: appplication/json' http://localhost:5000/w/foo -d '{"worker_id":"myworker_1"} - - The HTTP response is 201, and no content is returned. - - STATISTICS - When a worker is registered, statistics about this worker are collected. - - curl "http://localhost:5000/w/?worker_id=myworker_1" | json_xs -f json -t json-pretty - - { - "worker_id" : "myworker_1", - "started_at" : 1273923534, - "processed" : "0", - "failed" : "0" - } - - UNREGISTER A WORKER - When a worker has finished to work, it should unregister itself: - - curl -X DELETE "http://localhost:5000/w/foo?worker_id=myworker_1" - - The response HTTP code is 204, and no content is returned. - - JOB INTERFACE - INSERT A JOB - The Content-Type of the request must be set to application/json. The - body of the request must be a valid JSON object. - - curl -H 'Content-Type: application/json' -X POST "http://localhost:5002/q/foo" -d '{"key":"value"}' - - It's possible to create delayed jobs (eg: job that will not be run - before a defined time in the futur). - - curl -H 'Content-Type: application/json' -X POST "http://localhost:5002/q/foo?delayed="$(expr `date +%s` + 500) -d '{"key":"value"}' - - the delayed value should be a date in epoch - - FETCH A JOB - Return a JSON object - - curl http://localhost:5002/q/foo - - PURGE AND DELETE A QUEUE - curl -X DELETE http://localhost:5002/q/foo - - CHANGE THE POLICY OF A QUEUE - By default, when a queue is created, the status is set to 'open'. When a - queue is set to 'stop', no job will be fetched from the queue. - - To stop a queue: - - curl -X POST -H 'Content-Type: application/json' -d '{"status":"stop"}' http://localhost:5000/control/foo - - {"response":"updated","queue":"foo"} - - To re-open a queue: - - curl -X POST -H 'Content-Type: application/json' -d '{"status":"start"}' http://localhost:5000/control/foo - - To fetch the status of a queue: - - curl http://localhost:5000/control/foo - - {"status":"0","queue":"foo"} - - GET SOME STATUS ABOUT A QUEUE AUTHOR franck cuny <franck@lumberjaph.net> SEE ALSO + For a complete description of each routes, refer to + presque::WorkerHandler, presque::RestQueueHandler, + presque::ControlHandler, presque::JobQueueHandler, + presque::StatusHandler. + + For a complete worker see presque::worker. + LICENSE Copyright 2010 by Linkfluence diff --git a/lib/presque.pm b/lib/presque.pm index 309898f..a6dffd4 100644 --- a/lib/presque.pm +++ b/lib/presque.pm @@ -120,7 +120,7 @@ franck cuny E<lt>franck@lumberjaph.netE<gt> =head1 SEE ALSO -For a complete description of each routes, refer to L<presque::WorkerHandler>, L<presque::RestQueueHandler>, L<presque::ControlHandler>, L<JobQueueHandler>, L<presque::StatusHandler>. +For a complete description of each routes, refer to L<presque::WorkerHandler>, L<presque::RestQueueHandler>, L<presque::ControlHandler>, L<presque::JobQueueHandler>, L<presque::StatusHandler>. For a complete worker see L<presque::worker>. |