资源说明:Additional sidekiq middleware
# Additional sidekiq middleware [](http://badge.fury.io/rb/sidekiq-middleware) [](https://gemnasium.com/krasnoukhov/sidekiq-middleware) [](https://codeclimate.com/github/krasnoukhov/sidekiq-middleware) [](http://travis-ci.org/krasnoukhov/sidekiq-middleware) [](https://coveralls.io/r/krasnoukhov/sidekiq-middleware) This gem provides additional middleware for [Sidekiq](https://github.com/mperham/sidekiq). See [Sidekiq Wiki](https://github.com/mperham/sidekiq/wiki/Middleware) for more details. ## Installation Add this line to your application's Gemfile: gem 'sidekiq-middleware' And then execute: $ bundle Or install it yourself as: $ gem install sidekiq-middleware ## Contents ### UniqueJobs Provides uniqueness for jobs. **Usage** Example worker: ```ruby class UniqueWorker include Sidekiq::Worker sidekiq_options({ # Should be set to true (enables uniqueness for async jobs) # or :all (enables uniqueness for both async and scheduled jobs) unique: :all, # Unique expiration (optional, default is 30 minutes) # For scheduled jobs calculates automatically based on schedule time and expiration period expiration: 24 * 60 * 60 }) def perform # Your code goes here end end ``` Custom lock key and manual expiration: ```ruby class UniqueWorker include Sidekiq::Worker sidekiq_options({ unique: :all, expiration: 24 * 60 * 60, # Set this to true when you need to handle locks manually. # You'll be able to handle unique expiration inside your worker. # Please see example below. manual: true }) # Implement your own lock string def self.lock(id) "locks:unique:#{id}" end # Implement method to handle lock removing manually def self.unlock!(id) lock = self.lock(id) Sidekiq.redis { |conn| conn.del(lock) } end def perform(id) # Your code goes here # You are able to re-schedule job from perform method, # Just remove lock manually before performing job again. sleep 5 # Re-schedule! self.class.unlock!(id) self.class.perform_async(id) end end ``` ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Added some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。