From 0afbfaee75e8480e8e0ed0a3bbd3749a4756f727 Mon Sep 17 00:00:00 2001
From: franck cuny <franck@lumberjaph.net>
Date: Fri, 10 Sep 2010 23:25:10 +0200
Subject: initial import

---
 _posts/2010-06-25-presque-new_features.textile | 41 ++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)
 create mode 100644 _posts/2010-06-25-presque-new_features.textile

(limited to '_posts/2010-06-25-presque-new_features.textile')

diff --git a/_posts/2010-06-25-presque-new_features.textile b/_posts/2010-06-25-presque-new_features.textile
new file mode 100644
index 0000000..94d86f0
--- /dev/null
+++ b/_posts/2010-06-25-presque-new_features.textile
@@ -0,0 +1,41 @@
+---
+layout: post
+category: perl
+title: presque
+---
+
+I've added a few new features to "presque":http://github.com/franckcuny/presque.
+
+"presque":http://lumberjaph.net/presque-a-redis---tatsumaki-based-message-queue.html is a persistant job queue based on "Redis":http://github.com/antirez/redis and "Tatsumaki":http://github.com/miyagawa/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: "net::presque":http://github.com/franckcuny/net-presque, that you can use with "net::http::console":http://github.com/franckcuny/net-http-console:
+
+{% highlight bash %}
+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"
+}
+{% endhighlight %}
+
+I've also wrote a better "worker for Perl":http://github.com/franckcuny/presque-worker. 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 "resque":http://github.com/defunkt/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.
-- 
cgit v1.2.3

