我想从 NodeJS 排队 Resque 作业。我看到的监控 Redis 命令:
1346127083.495055 "sadd" "resque:w:tasks:queues" "facebook"
1346127083.495471 "rpush" "resque:w:tasks:queue:facebook" "{\"class\":\"Hello::FacebookFriends\",\"args\":[\"2342324\"]}"
直接从 Node 发出这些命令似乎有效。是否有任何隐藏的错误或我不知道的事情?
更新:我的工作是用 Ruby 编写的。虽然我喜欢 NodeJS 并且我在 Javascript 方面做得更好,但我需要大量在 NPM 中仍然无法正常使用的库,例如与 Twitter 和 Facebook 通信(Twitter 和 Koala gems,Node 没有可比性)。所以我想从我的 NodeJS 服务启动 Ruby Jobs。
到目前为止,我使用的东西看起来类似于 coffee-resque 中的这个函数:
enqueue: (queue, func, args) ->
@redis.sadd @key('queues'), queue
@redis.rpush @key('queue', queue),
JSON.stringify class: func, args: args || []
这里:
job = JSON.stringify
class: 'Hello::FacebookFriends'
args: [user_id, fb.id]
@redis_client.multi()
.sadd('resque:w:tasks:queues', 'facebook')
.rpush('resque:w:tasks:queue:facebook', job)
.exec()