2013-09-23 62 views

回答

4

您的腳本將如何觸發?有問題的卷是什麼?處理是按順序進行還是在某種基於事件的系統中進行?這兩個庫基本上是相同的 - 除了一個核心差異。

兔子是用於順序處理。在下一條消息被檢索之前,消息從隊列中彈出,處理並確認。爲了擴展這一點,您應該使用線程或進程一次處理更多消息。

AMQP gem基於事件並在EventMachine reactor內運行。這非常適合RabbitMQ或其他外部服務成爲瓶頸的輕負載。使用AMQP gem,消費者將消費盡可能多的消息(或告知),併爲每條消息啓動單獨的回調。如果回調進行自己的網絡呼叫,這可能是最好的解決方案,因爲它允許Ruby最有效地交織網絡通信。

簡短的總結,但基本上爲一個很少運行的腳本我會建議兔子的序列性質,特別是如果你以前沒有在EventMachine工作過。在不瞭解工作量的情況下很難完全回答。

看看jondot/sneakers爲現成的兔子框架。

+0

感謝boffbowsh,您的比較幫助我做出我的決定,我可能會首先嚐試使用Bunny來解決我的問題域,即每5秒檢索一次所有消息(估計約0-20條消息) –

+0

Bunny對我的需求非常滿意。這個資源是非常有用的http://rubybunny.info/articles/getting_started.html和這個http://rubybunny.info/articles/queues.html - 對於我的學習應用程序,我最終使用pull API來取消消息隊列1一次 –