No commit activity in last 3 years
No release in over 3 years
Queue_Dispatcher executes asynchronous tasks in the background.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

QueueDispatcher for Rails3 / Rails4¶ ↑

<img src=“https://codeclimate.com/github/InWork/queue_dispatcher.png” />

This Rails3 Gem implements a method to perform long running methods in the background. Background tasks will be executed by persistent workers.

Install¶ ↑

Inside your Gemfile:

gem "queue_dispatcher"

and then run:

bundle install

To install the queue_worker_dispatcher script, which starts all workers, execute the following rake command:

rake queue_dispatcher:sync

Database Setup¶ ↑

Use

rails g queue_dispatcher:migration

This will create a database migration for the models Task and TaskQueues.

If you update the queue_dispatcher from pre 1.5.1 you have to use the following command to update your migrations:

Use

rails g queue_dispatcher:migration --skip

This will create all new database migrations for the models Task and TaskQueues and leve the existing as they are.

Gem Dependencies¶ ↑

Please check if all those requirements are satisfied on your environment.

  • rails >= 3.0.0

  • sys-proctable >= 0.9.1

Inside your application¶ ↑

To enqueue a long running task, simple call a method through enque. E.g.: Assume, you have a long running job:

LongRunningMailJob.send_mail

Now we’d like to execute it in the background by simply calling:

task = LongRunningMailJob.enqueue.send_mail

If you like to put the job in a queue, you can do this by execute it the following way:

task = LongRunningMailJob.enqueue(queue: 'queue_name').send_mail

Jobs inside a queue are executed serialized, not in parallel. You can define dependencies. A task is then executed only after all dependent tasks are finished. The dependencies could also be in another queue. This way you could ensure, that a task is only executed when another task from another queue is successfully finished. Code to add Task dependencies:

task.dependent_tasks = another_task

Queue Worker Dispatcher¶ ↑

The QueueWorkerDispatcher-script starts the workers (default are 10 workers). A worker waits for a new queue and executes all tasks of this queue. Start the QueueWorkerDispatcher by executing the following command:

script/queue_worker_dispatcher

To start the QueueWorkerDispatcher as a daemon, use the option -b.

-b, --background        work in background mode

License¶ ↑

This project is licenced under the MIT license.

Author¶ ↑

Philip Kurmann (philip (at) kman.ch)