2
我正在將一個cron上運行的一些資源密集型功能移到RabbitMQ隊列中。我厭倦了長時間運行PHP使用者腳本,因此我正在考慮執行以下操作:RabbitMQ basic_get與多個消費者
- 作業在一天的開始時添加到隊列中。
- cron運行啓動使用者的命令。
- 消費者使用
basic_get
得到一份工作,處理作業,確認工作,然後退出。 - cron再次運行並處理下一個作業。
我身邊有多麼好,這將工作幾個問題。
如果我決定通過cron啓動兩名工作人員(運行命令兩次),並且第一份工作仍在處理中,但尚未得到確認,RabbitMQ是否會將相同的工作發送給第二名工作人員?
我注意到basic_consume
將是更好的性能,因爲接收到每個作業時,沒有往返。是否有可能使用basic_consume
而不是basic_get
,而不必擔心工作人員跑了太久?
我同意W代表第一部分/ cantSleepNow和他對basic_consume是更好的性能,當你離開一個用戶活着,讓它處理多條消息是正確的。儘管如此,我不確定我會在你的情況下建議basic_consume。由於您想要處理單個消息並退出該過程,因此basic_get可能是正確的選擇。 –
謝謝你們。該計劃最終將有一個Go應用程序作爲長時間運行的工作人員,每當將作業添加到隊列時都會觸發命令。單一的工作執行只是一個停止的差距,而我們使用PHP作爲監聽器,因爲我不相信長時間運行的PHP腳本的可靠性。所以我猜basic_get會做。如果我們有積壓,我仍然可以激發多個消費者。 @DerickBailey我幾天前註冊了您的RMQPatterns電子郵件,迄今爲止非常有幫助。謝謝! – James