summaryrefslogtreecommitdiff
path: root/posts/2010-06-25-presque-new_features.org
diff options
context:
space:
mode:
Diffstat (limited to 'posts/2010-06-25-presque-new_features.org')
-rw-r--r--posts/2010-06-25-presque-new_features.org60
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.