diff options
| author | Franck Cuny <franckcuny@gmail.com> | 2016-08-04 11:45:44 -0700 |
|---|---|---|
| committer | Franck Cuny <franckcuny@gmail.com> | 2016-08-04 11:45:44 -0700 |
| commit | 585b48b6a605cb71ef99dd767880e1b7ee5bf24e (patch) | |
| tree | c65377350d12bd1e62e0bdd58458c1044541c27b /posts/2010-06-25-presque-new_features.org | |
| parent | Use Bullet list for the index. (diff) | |
| parent | Mass convert all posts from markdown to org. (diff) | |
| download | lumberjaph-585b48b6a605cb71ef99dd767880e1b7ee5bf24e.tar.gz | |
Merge branch 'convert-to-org'
Diffstat (limited to 'posts/2010-06-25-presque-new_features.org')
| -rw-r--r-- | posts/2010-06-25-presque-new_features.org | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/posts/2010-06-25-presque-new_features.org b/posts/2010-06-25-presque-new_features.org new file mode 100644 index 0000000..25a8250 --- /dev/null +++ b/posts/2010-06-25-presque-new_features.org @@ -0,0 +1,60 @@ +I've added a few new features to +[[http://github.com/franckcuny/presque][presque]]. + +[[/presque-a-redis-tatsumaki-based-message-queue/][presque]] is a +persistant job queue based on [[http://github.com/antirez/redis][Redis]] +and [[http://github.com/miyagawa/Tatsumaki][Tatsumaki]]. + +A short list of current features implemented: + +- jobs are JSON object +- possibility to stop/start queues +- jobs can be delayed to run after a certain date in the future +- workers can register themself, doing this, you can know when a worker + started, what he have done, ... +- statistics about queue, jobs, and workers +- possible to store and fetch jobs in batch +- a job can be unique + +The REST interface is simple, and there is only a few methods. It's fast +(I will provide numbers soon from our production environment), and +workers can be implemented in any languages. + +There have been a lot of refactoring lately. The main features missing +right now are a simple HTML interface that will display various +informations, pulling the data from the REST API (hint : if someone want +to help to design this one ... :) ), websocket (sending a message to all +workers). + +There is a Perl client to the REST API: +[[http://git.lumberjaph.net/p5-net-presque.git/][net::presque]], that +you can use with +[[http://git.lumberjaph.net/p5-net-http-console.git/][net::http::console]]: + +#+BEGIN_EXAMPLE + % perl bin/http-console --api_lib Net::Presque --url http://localhost:5000 + http://localhost:5000> fetch_job {"queue_name":"twitter_stream"} + { + "text" : "Australias new prime minister - julia gillard is our 27th prime minister.", + "user" : "Lov3LifeAlways" + } +#+END_EXAMPLE + +I've also wrote a better +[[http://git.lumberjaph.net/p5-presque-worker.git/][worker for Perl]]. +It's a Moose::Role that you apply to your class. You need to write a +*work* method, and your done. This worker handle retries, provide a +logger, ... As for [[http://github.com/defunkt/resque][resque]], there +is two dispatcher: + +- normal : the worker grab a job, process it, then ask for the next job +- fork : the worker grab a job, fork, let the child do the job and + exit, while the parent ask for the next job. As resque says, "Resque + assumes chaos". And me too, I like (ordered) chaos + +I hope to finish the documentation and to writes one or two more workers +as example (maybe in Python and javascript/node.js) soon to be able to +tag a first version, and to collect some info about how many jobs have +been processed at work (we use it to do url resolution and collect +twitter data among few other things). Although I'm not sure I will +release it to CPAN. |
