我想對來自NodeJS的Resque作業進行排隊。監視Redis命令我看到:來自NodeJS的隊列Resque Jobs
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寶石,沒有任何可比的節點)。所以我想從我的NodeJS服務啓動Ruby Jobs。
到目前爲止,我使用的東西,看起來類似於從咖啡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()
你是什麼意思?在ruby中創建一個路由然後從Node ping它? – CamelCamelCamel
準確地說,創建一個路線,在被調用時創建該作業。這不是一個漂亮的解決方案,但它應該做你需要的。 –