Module: Faktory::Middleware

Defined in:
lib/faktory/middleware/chain.rb

Overview

Middleware is code configured to run before/after a job is processed. It is patterned after Rack middleware. Middleware exists for the client side (pushing jobs to a queue) as well as the worker side (when jobs are actually executed).

To add middleware to run when a job is pushed to Faktory:

Faktory.configure_client do |config| config.client_middleware do |chain| chain.add MyClientHook end end

To run middleware when a job is executed within the worker process, add it to the worker_middleware:

Faktory.configure_worker do |config| config.worker_middleware do |chain| chain.add MyServerHook chain.remove ActiveRecord end end

To insert immediately preceding another entry:

Faktory.configure_client do |config| config.client_middleware do |chain| chain.insert_before SomeOtherMiddleware, MyClientHook end end

To insert immediately after another entry:

Faktory.configure_client do |config| config.client_middleware do |chain| chain.insert_after ActiveRecord, MyClientHook end end

This is an example of a minimal worker middleware:

class MyServerHook def call(worker_instance, job) puts "Before work" yield puts "After work" end end

This is an example of a minimal client middleware, note the method must return the result or the job will not push to Redis:

class MyClientHook def call(job, conn_pool) puts "Before push" result = yield puts "After push" result end end

Defined Under Namespace

Modules: Batch, I18n Classes: Chain, Entry