mstump <mrevilgn...@gmail.com> writes:

> I'm curious as to what people are using for workers/queues. We're
> currently using storm, but im interested in evaluating alternatives.

If you can make your workflow fit, it's hard to beat the simplicity of
sending expressions over a message queue like RabbitMQ. This is the
approach Die Roboter uses:

    https://github.com/technomancy/die-roboter/

While this particular implementation hasn't seen a lot of real world
use, it's based upon 2 years of experience managing a huge data pipeline
over AMQP. Since Clojure forms are trivial to send over the wire it
turns out you can implement it in under 200 lines:

    https://github.com/technomancy/die-roboter/blob/master/src/die/roboter.clj

Here's an example program that uses it to distribute log parsing:

    https://github.com/technomancy/logan/blob/master/src/logan/core.clj

IMO asynchronous messaging over queues is often overlooked but has some
pretty compelling advantages to offer, not the least of which is the
simplicity of the execution model. With Rabbit you also get the ability
to retry failed jobs by having workers claim a message but hold off on
acking it until the form has returned a value.

The main gotcha is that long-running tasks need to regularly report
progress in order to avoid timing out, but Die Roboter comes with a
variant of clojure.java.io/copy that periodically resets timeouts.

-Phil

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to