Sidekiq configuration

Sidekiq is one of the more widely used background job frameworks that you can configure as queuing backend. I've tested to following install and configuration steps on a fresh Ubuntu 18.04 with Redmine 4.1.1, Redis version 4 and Sidekiq 6.

1. Prerequisites:

  1. Install redis-server.

2. Install sidekiq

  1. Add the gem as dependency in Gemfile.local file. If the file doesn't exist, you need to create it.
    gem 'sidekiq'
    
  2. Run bundle install to install the dependency

3. Configure Sidekiq

  1. Create config/sidekiq.yml file inside Redmine directory and set the queues
    ---
    :queues:
      - mailers
    

4. Configure Redmine to use sidekiq as backend

  1. Create config/additional_environment.rb file if the file does not exist by copying the existing example file:
    cp config/additional_environment.rb.example config/additional_environment.rb
    
  2. Add the below config line to the file:
    config.active_job.queue_adapter = :sidekiq
    
  3. Restart Redmine to reload the configuration file.

5. Test the configuration

  1. Browse to Information tab from Redmine Administration page and check the mailer queue value:
      Mailer queue                   ActiveJob::QueueAdapters::SidekiqAdapter
    
  2. Perform some actions in Redmine in order to trigger some notifications emails. In this step, Redmine only pushes the background jobs to Sidekiq backend.
  3. Temporary start sidekiq in order to process the queue and send the emails:
    RAILS_ENV=production bundle exec sidekiq
    

    Output example of startup process:

    2020-06-13T15:08:12.470Z pid=23782 tid=gqluhczs2 INFO: Booted Rails 5.2.4.2 application in production environment
    2020-06-13T15:08:12.470Z pid=23782 tid=gqluhczs2 INFO: Running in ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
    2020-06-13T15:08:12.470Z pid=23782 tid=gqluhczs2 INFO: See LICENSE and the LGPL-3.0 for licensing details.
    2020-06-13T15:08:12.470Z pid=23782 tid=gqluhczs2 INFO: Upgrade to Sidekiq Pro for more features and support: https://sidekiq.org
    2020-06-13T15:08:12.471Z pid=23782 tid=gqluhczs2 INFO: Booting Sidekiq 6.0.7 with redis options {}
    

    Output example of job processing:

    2020-06-13T14:53:19.773Z pid=23268 tid=gmo48ykw4 class=ActionMailer::DeliveryJob jid=0b1943f5a675330944781492 INFO: start
    2020-06-13T14:53:21.171Z pid=23268 tid=gmo48ykw4 class=ActionMailer::DeliveryJob jid=0b1943f5a675330944781492 elapsed=1.397 INFO: done
    

  4. If everything went well, stop the command.

6. Configure sidekiq to run as a system service

  1. Follow the official steps described in https://github.com/mperham/sidekiq/wiki/Deployment#running-your-own-process
  2. The above steps points to a sidekiq.service example file which can be used to configure the service
  3. During service configuration, at least the following information must be provided:
    • WorkingDirectory
    • User
    • Group

    I recommend to carefully read all the instructions and how to configure the service.

  4. Enable and start the service:
    sudo systemctl enable sidekiq 
    sudo systemctl start sidekiq 
    
  5. Test again the email notifications