Incredibly cool, and thanks for this TJ (as well as your other great work for the Node.js community.)
Have you seen coffee-resque[1], a CoffeeScript interface to the Resque queueing system originally written in Ruby? It's similar, and both Resque (through resque-web) and your app have really nice interfaces. Did you build this because Resque wasn't everything you wanted?
a) I really wanted the logging / progress indication (haven't seen that personally)
b) I don't read/write coffeescript
c) I don't think coffee-resque has a UI (unless the ruby one works?)
Awesome, and awesome looking interface. Reminds me of Our project Norc, (github.com/darrellsilver/norc). Kue has intermediate statusnof the job, which would be a great feature for Norc.
yup, I don't see why not, I plan on integrating cluster (one of our projects). each worker uses its own connection with WATCH to implement ZPOP so it should scale fine. we'll certainly need it to :)
I keep seeing these (admittedly cool) redis based job queues popping up for different languages, such as resque, pyres, now kue, etc, however I'm disappointed to not see any standardization among them. Obviously they're different projects created by different people, but it would be great to have a common protocol amongst them, especially since they're all just json based messages.
I want to be able to use a job queue as a standard way to communicate between various language backends, so I can use different tools for different jobs. I've started looking into beanstalkd as it has an impressive list of client libraries: https://github.com/kr/beanstalkd/wiki/Client-Libraries.
I'm curious to hear if anyone has any thoughts/experiences/recommendations on using open source job queues to facilitate background processing between different languages and backends. I'm already using redis and resque, something like rabbitmq is overkill, and I just started looking into beanstalkd.
i agree interface wise it would be interesting, though i think many have slightly different goals and techniques, and frankly they are really basic, but UI-wise it could be neat
coffee-resque and resque work together really well. I didn't mess with the python resque lib much, but I was able to get it to read jobs queued by ruby. With a little work, resque could work as a cross platform queue if you wanted. The main issue I ran into is the way the libs bind resque jobs to objects. For instance, the ruby resque library queues jobs by the ruby class name (Foo::Jobs::Bar), which doesn't translate well to python or node.
A good first step would be defining a spec based on how resque or kue work so that alternate language ports can be written. In the case of resque, other interfaces like its failure or plugin system should also be documented, so that those libs could be ported too.
One thing I'm not sure about with these job queues - how do you handle cases like having to drop down to C++ to do a chunk of work that cannot be done in JS, without blocking the interpreter?
Or would you just submit that work to a separate external process over something like RabbitMQ, and handle the return when its done?
few ways, you could still utilize child processes of course, so web workers or something. Or just chunk that work up and nextTick() increasing concurrency, OR just increase the total number of workers for more parallelism.
18 comments
[ 2.3 ms ] story [ 54.5 ms ] threadHave you seen coffee-resque[1], a CoffeeScript interface to the Resque queueing system originally written in Ruby? It's similar, and both Resque (through resque-web) and your app have really nice interfaces. Did you build this because Resque wasn't everything you wanted?
[1]: https://github.com/technoweenie/coffee-resque
The Ruby `resque-web` interface works and is beautiful[1] with live polling.
[1]: http://fhwang.net/image/image/124/4b0a538a5aa9a3e7dc1ff81bc4...
I want to be able to use a job queue as a standard way to communicate between various language backends, so I can use different tools for different jobs. I've started looking into beanstalkd as it has an impressive list of client libraries: https://github.com/kr/beanstalkd/wiki/Client-Libraries.
I'm curious to hear if anyone has any thoughts/experiences/recommendations on using open source job queues to facilitate background processing between different languages and backends. I'm already using redis and resque, something like rabbitmq is overkill, and I just started looking into beanstalkd.
A good first step would be defining a spec based on how resque or kue work so that alternate language ports can be written. In the case of resque, other interfaces like its failure or plugin system should also be documented, so that those libs could be ported too.
Or would you just submit that work to a separate external process over something like RabbitMQ, and handle the return when its done?