2013-10-18 64 views
0

我正在開發一個項目,其中多個工作人員從一個作業隊列接收STOMP消息進行處理,我們希望優先支持。目前,我們正在使用ActiveMQ,但是我們無法獲得內置的優先級支持以正常工作,並且不得不求助於使用多個隊列,每個優先級一個隊列。這是有效的,但是因爲每個隊列的緩衝區中至少有一個未確認的消息客戶端,所以等待被確認。如果幾千條消息以一個優先級出現,緩衝區中用於較低優先級的任何消息可能會一次在那裏停留數小時甚至數天。具有優先級或客戶端拉的排隊系統?

這將是很好,如果我們可以輪詢服務器的消息,而不是被動地等待,但這似乎不支持,除非我們使用OpenWire,這似乎是過度殺傷。對我們可能使用的解決方案有何建議

編輯:我想到了當我說我們無法確定工作重點時提到了我的意思。當我們測試ActiveMQ的優先級時,一旦發生足夠大的積壓,似乎就不再尊重它們。

回答

0

您的使用案例聽起來像是開始使用openwire客戶端的理想時間,因爲它既支持消息拉取,也支持客戶端優先級排序,以處理代理無法兌現優先級的情況。我不確定你爲什麼認爲它過於矯枉過正,但似乎矯枉過正可能正是你需要的。

+0

矯枉過正因爲它需要徹底重寫甚至是語言切換。目前,這項工作是在Perl中完成的,OpenWire支持似乎幾乎完全沒有;因此,我們必須編寫我們自己的圖書館。 Cursory搜索似乎表明Ruby和Python可能會有更好的支持。 – Alaska

+0

如果那是我必須去的方式,那就這樣吧,但我想我會先選擇專家的大腦。 – Alaska