2012-06-06 50 views
0

我是新來的ActiveMQ,做一個項目,涉及從隊列中讀取消息,然後分批處理它們。 (我鏟他們到第三方API,一次只能處理100個,雖然少於100個就可以)ActiveMQ和Rails

我發現的每個示例都涉及事件驅動的代碼,它以原子方式處理每個消息。有沒有一種寶石,插件,或其他方法,將允許形式

while(!queue.empty?) do 
    chunk = [] 

    while(!queue.empty? && chunk.size < 100) do 
     chunk << queue.read 
    end 

    do_something_with(chunk) 
end 

的僞代碼或者這是一個傻瓜的差事還是什麼?

回答

1

我想你可以在這種情況下使用消息分組。這樣,您可以在一個批次中對消息進行分組,因爲發件人已設置了分組標題。這裏是關於如何ActiveMQ處理這方面的信息:ActiveMQ on Message Grouping

我不是ruby編碼器,但我認爲當您談論事件驅動的API時,您正在使用一些「on_message」函數。 IBM有一個很好的教程,如何在消息監聽器(MDB)中接收JMS消息組。它是Java和WebSphere MQ,但JMS概念應該一致。
IBM on JMS message grouping in MDB

您可能會或可能無法翻譯成軌,但在等待正確的代碼示例在這裏顯示它可能給一些提示! :)