2010-05-25 176 views
2

我試圖在實現併發線程的幾次失敗嘗試後,在Grails中實現Consumer/Producer應用程序。 基本上我想在單個隊列中存儲來自客戶端的所有事件(通過單獨的AJAX調用),然後在添加新事件後立即以線性方式處理這樣的隊列。Grails中的生產者/消費者?

這看起來像一個生產者/消費者問題http://en.wikipedia.org/wiki/Producer-consumer_problem

我如何在Grails中實現這一點(也許有一個計時器,甚至更好的通過產生一個事件「過程隊列」)?

基本上我想有一個單身服務等待隊列中的新事件併線性處理它們(即使隊列由多個併發進程加載)。

任何提示?

乾杯!

回答

1

我最近不得不實行相同的排序系統,並與RabbitMQ拍得消息經紀人,以及所使用的RabbitMQ plugin Grails的到與它接口。

我選擇RabbitMQ是因爲它具有我期待的功能(規模,速度,可靠性),並且建立在AMQP標準之上,這意味着我可以讓我的生產者和消費者用我需要的任何語言編寫而不用擔心。

作爲生產者和消費者,Grails都能很好地工作,並具有仍然能夠使用應用程序的完整GORM域的優勢。

爲了規模化,無論是生產商還是消費者隊列末尾,我所要做的就是旋轉更多grails實例並調整消費者線程數,因此它的運行效果非常好。