从NodeJS队列Resque Jobs
我想从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和Koalagem,与Node没有任何可比性)进行通信。 所以我想从我的NodeJS服务启动Ruby作业。
到目前为止,我使用的是与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()
为什么不build立一个closures工作的服务? 这将是一个额外的跳跃通过networking,但代码应该足够简单(例如,看看http://www.sinatrarb.com/ )。
我想你应该使用: https : //github.com/technoweenie/coffee-resque
(名称说咖啡,但你也可以使用它与JavaScript)也看起来很简单,你会更安全的预料不到的结果,突破变化等
您可以使用TaskRabbit的节点重新调用库来执行此操作。
这里有一篇文章可以帮助你开始。 它还有一个链接到Heroku上的演示,你可以连接你的Redis实例,看看你的Resque队列和作业。