mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
1.6 KiB
1.6 KiB
Middleware Changes in Sidekiq 7.0
With the internal refactoring coming in Sidekiq 7.0 it is necessary to make minor changes to the Middleware API.
tl;dr - middleware should now include Sidekiq::ClientMiddleware or Sidekiq::ServerMiddleware.
Currently the middleware API looks like this:
Existing Client API
Client middleware is run when pushing a job to Redis.
class Client
def initialize(optional_args)
@args = optional_args
end
def call(worker, job, queue, redis_pool)
yield
end
end
Sidekiq.configure_client do |config|
config.client_middleware do |chain|
chain.add Client, optional_args
end
end
Server
Server middleware is run around job execution.
class Server
def initialize(optional_args)
@args = optional_args
end
def call(worker, job, queue)
Sidekiq.redis {|c| c.do_something }
Sidekiq.logger.info { "Some message" }
yield
end
end
Sidekiq.configure_server do |config|
config.server_middleware do |chain|
chain.add Server, optional_args
end
end
Updated API
The updated middleware API requires the middleware class to include a helper module.
class Client
include Sidekiq::ClientMiddleware
def initialize(optional_args)
@args = optional_args
end
def call(worker, job, queue, redis_pool)
yield
end
end
class Server
include Sidekiq::ServerMiddleware
def initialize(optional_args)
@args = optional_args
end
def call(worker, job, queue)
# note we no longer need to use the global Sidekiq module
# to access Redis and the logger
redis {|c| c.do_something }
logger.info { "Some message" }
yield
end
end