views:

68

answers:

3

Hi,

I'm looking for a job queue that has the following features:

  1. Can specify a specific future time for a job to be run
  2. Failures are recorded
  3. The ability to delete specific jobs from the queue (can live without this one but would be nice)
  4. Not MySQL based
  5. Works well with Rails

So far I've looked at a few such as starling and sparrow but have not been able to see any that can run jobs at a specific time.

Thanks

A: 

I was looking at Beanstalkd today. Its Ruby bindings exist. There's also a Rails-specific plugin. And many other bindings. The "run jobs at a specified time" feature I believe you've got to build for your application.

olleolleolle
we wanted to avoid building the logic in our app for running jobs at a specific time if possible. We will be creating new jobs constantly and they all need to be run at a specific time after the job was created. If we build this logic in to our app it would have to be running a task every couple of seconds to figure out if there are any jobs that need doing. I see that DelayedJob can do this kind of thing but unfortunately this is MySQL based and kills performance some what.
JamieD
If you decide to build your own running jobs at a specific time application, you don't need to constantly poll the job queue. You add the job to a queue sorted in time order. The queue writes to a listener when the time at the top of the queue is older than current time.
Gilbert Le Blanc
A: 

This is not pure Ruby, but you could create a crontab that would launch your Ruby jobs. For modifying the jobs, see e.g. CronEdit.

Piskvor
A: 

For generic tool questions like this, the first step is to check Ruby Toolbox.

I believe delayed_job should do the job.

Note: it is ActiveRecord based, so any storage solution that AR can deal with will work.

Marc-André Lafortune
Not seen the ruby tool box site before, most useful. I've decided to go with DelayedJob as it appears to be one of the only queues that supports running jobs at specific times. Shame the GitHub guys didn't add this feature to Resque as it looks pretty cool
JamieD