我在rails项目目录中有一个普通的sidekiq worker 。它应该作为监听器工作,并在每次 RabbitMQ 队列中出现新数据时触发。为了优化该项目,决定将来自 RabbitMQ 的消息监听移至一个单独的进程中,并从那里调用主项目中的工作线程。
问题是如何将任务从单独的进程发送到 Rails sidekiq 项目?
或者如果您有其他想法如何实现这一点,请告诉我
最佳答案
以下是将作业推送到 Sidekiq 能够理解的 Redis 的方法:
require 'securerandom'
require 'json'
redis = Redis.new(:url => 'redis://hostname:port/db')
msg = { "class" => 'MyWorker',
"queue" => 'default',
"args" => [1, 2, 3],
'retry' => true,
'jid' => SecureRandom.hex(12),
'created_at' => Time.now.to_f,
'enqueued_at' => Time.now.to_f }
redis.lpush("queue:default", JSON.dump(msg))
https://github.com/mperham/sidekiq/wiki/FAQ#how-do-i-push-a-job-to-sidekiq-without-ruby
关于ruby-on-rails - 从单独的进程调用 sidekiq 工作程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51767010/