Text
Page: 1
Redmine × Solid Queue:
安心簡単キュー構成
西田雄也
2025-07-25
REDMINE JAPAN vol.4
Powered by Rabbit 3.0.5
Page: 2
背景: キューアダプター
https://www.redmine.org/projects/redmine/wiki/
RedmineInstall#Queues-adapter より,
Redmine uses ActiveJob::QueueAdapters::AsyncAdapter
as default queue adapter which is not recommended
for production environment. Recommended adapter is
Sidekiq which uses Redis for persistance.
RedmineはAsyncAdapterをデフォルトのキューアダプター
として使うが,本番環境では推奨しない.
推奨するアダプターはRedisを永続化に使うSidekiqである.
1/20
Page: 3
背景: どういうことか
Redmineはチケットの追加や更新をメイル通知するのにデフォル
トではキューアダプターにAsyncAdapterを使っている.
AsyncAdapterはスレッドベースのため,Redmineが終了すると
そのジョブが失われる.具体的にはメイルが失われる.
↓
実運用の例としてジョブの保存先にRedisを使うSidekiqAdapter
の設定方法がredmine.orgで紹介されている.
https://www.redmine.org/projects/redmine/wiki/SidekiqConfiguration
2/20
Page: 4
背景: キューアダプターあれこれ
RDBMSをバックエンドにするキューアダプター:
DelayedJob, GoodJob, Solid Queue
RDBMSで済むならSidekiqと違ってRedisが不要になる
ただしパフォーマンス面はRedisの方が良い
Rails 8からSolid Queueがデフォルトのキューアダプターに
なった
↓
Redmineでも使って楽しよう!
3/20
Page: 5
手順: 準備
1. Gemfile.localにgem "solid_queue"
2. 実行: bundle && bin/rails solid_queue:install
3. db/migrate/年月日時分秒_add_solid_queue_tables.rbに
db/queue_schema.rbの内容を書く
楽するためにシングルデータベースにしてます
4. 実行: bin/rails db:migrate
5. config/additional_environment.rbに
config.active_job.queue_adapter = :solid_queue
4/20
Page: 6
手順: ジョブ処理プロセス実行
以下のようにしてスーパーバイザー(ジョブ処理のためのもろ
もろのプロセス実行するもの)起動
$ bin/jobs start
Pumaを使っている場合はRedmine起動時に合わせて起動する
ことも可能
# config/puma.rb
plugin :solid_queue
5/20
Page: 8
redmine.orgのWikiにも書いた
https://www.redmine.org/projects/redmine/wiki/
SolidQueueConfiguration
7/20
Page: 10
いや ちょっ
と待ってく
ださい
Page: 11
手順
1. Gemfile.localにgem "solid_queue"
2. 実行: bundle && bin/rails solid_queue:install
3. db/migrate/年月日時分秒_add_solid_queue_tables.rbに
db/queue_schema.rbの内容を書く
4. 実行: bin/rails db:migrate
5. config/additional_environment.rbに
config.active_job.queue_adapter = :solid_queue
6. このあとスーパーバイザー起動
10/20
Page: 18
プラグインを書きました
redmine_solid_queueプラグインを入れて,
$ git clone \
https://github.com/nishidayuya/redmine_solid_queue \
plugins/redmine_solid_queue &&
bin/rails redmine:plugins
スーパーバイザーを起動するだけ
$ plugins/redmine_solid_queue/bin/jobs start
Pumaを使っている場合は↑も不要という親切設計
別ノードにしたいから余計なお世話な場合は環境変数でdisable
17/20
Page: 19
まとめ
Solid Queueは安心簡単
メイル通知の頻度によってはこれだけで十分
↓のプラグインを使えば最低2コマンド実行だけで導入可能
https://github.com/nishidayuya/redmine_solid_queue
18/20
Page: 20
参考
https://github.com/rails/solid_queue
Sidekiq vs Solid Queue
https://kaigionrails.org/2024/talks/willnet/
Redis不要のSolid QueueはSidekiq OSSに勝てるのか?Rails
8で非同期処理を徹底比較
https://zenn.dev/counterworks/articles/a899a4f6a621e9
(How I) Deploy Solid Queue with Capistrano
https://world.hey.com/robzolkos/how-i-deploy-solid-queue-with-
capistrano-487b4a31
19/20
Page: 21
自己紹介: 西田雄也 @nishidayuya
ネットワーク応用通信研究所所属プログラマ
作ったことがあるRedmineプラグイン
redmine_text_format_converter: TextileからMarkdownへ変換
redmine_ruby_wasm: Redmine上でRubyのコードを実行
The Never Deleting Story a.k.a. 絶対削除させないマン
redmine_solid_queue (new!)
Powered by Rabbit 3.0.5
20/20