通过Redis手动启动Sidekiq作业

时间:2014-04-18 21:52:51

标签: ruby redis sidekiq

有没有办法在不使用Ruby的情况下手动启动Sidekiq进程,但是将相应的消息发布到Redis中?对于它所期望的消息,必须有某种约定。

3 个答案:

答案 0 :(得分:8)

答案 1 :(得分:1)

不确定为什么要这样做,但是从文档来看:" Sidekiq与Resque兼容。它使用与Resque完全相同的消息格式,因此它可以集成到现有的Resque处理场中。"我知道Resque将数据哈希排队为字符串:

"{\"class\":\"NoOpWorker\",\"args\":[]}"

您可以通过在控制台上将作业排入队列来手动验证:

Resque.enqueue_to "foo", NoOpWorker

然后使用redis-cli命令查看数据是什么

redis-cli lrange resque:queue:foo 0 100

但在继续之前,你为什么要这样做?为什么不运行一个脚本或一个rake任务,通过Sidekiq的普通API来排队,而不是乱砍它?

编辑:您是否尝试在技术之间进行互操作?

答案 2 :(得分:0)

Redis对Ruby或Sidekiq一无所知。

所以是的,这是可能的。它可能需要一些工作,你可能不得不考虑非公开的版本(好吧,它毕竟是开源的,所以任何东西都是公开的) API。

您可以使用任何编程语言编写单独的客户端进程,并分析redis密钥空间。阅读Sidekiq序列化的实现。快速浏览(我不使用Sidekiq)显示它使用简单的JSON序列化:sidekiq/api.rb

希望这有帮助,TW