ruby-on-rails - 从单独的进程调用 sidekiq 工作程序

标签 ruby-on-rails ruby rabbitmq sidekiq

我在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/

相关文章:

ruby - $SAFE = 4 和定时执行限制是否足以防止 eval 在 Ruby 中的安全漏洞?

ruby-on-rails - 服务器启动时如何修复 "Your Ruby version is 2.3.0, but your Gemfile specified 2.2.5"

Rabbitmq - 如何监听交换上的消息

python - 运行 celery 任务时如何取消确认消息?

ruby-on-rails - 使用 Capistrano 部署 - 仅针对匹配的服务器运行

ruby-on-rails - 如何访问 ActiveModel 验证错误的翻译 key ?

mysql - Ruby on Rails 多个唯一列

ruby-on-rails - 在 Rails 中将 delayed_job 用于 Mechanize 脚本(NoMethodError : undefined method for nil:NilClass)

ruby-on-rails - 如果记录存在,如何设置变量

java - RabbitMQ Java 客户端自动重新连接