Provides Wisper with asynchronous event publishing using Sidekiq.
gem 'wisper-sidekiq'
publisher.subscribe(MyListener, async: true)
The listener must be a class (or module), not an object. This is because Sidekiq can not reconstruct the state of an object. However a class is easily reconstructed.
Additionally, you should also ensure that your methods used to handle events under MyListener
are all declared as class methods:
class MyListener
def self.event_name
end
end
When publshing events the arguments must be simple as they need to be
serialized. For example instead of sending an ActiveRecord
model as an argument
use its id instead.
See the Sidekiq best practices for more information.
You can also customize queue name, retry value and other sidekiq options when registering the listener like the following:
publisher.subscribe(MyListener, async: { queue: 'custom', retry: false })
The same Ruby versions as Sidekiq are offically supported, but it should work with any 2.x syntax Ruby including JRuby and Rubinius.
See the build status for details.
To run sidekiq use scripts/sidekiq
. This wraps sidekiq in rerun
which will restart sidekiq when specs/dummy_app
changes.