2012-01-10 50 views
2

資源分配/優先排序問題。如何優先處理不同隊列中的消息?

我正在研究一個Java EE應用程序,它具有多個接收來自不同JMS隊列消息的消息驅動Bean(MDB),爲了簡單起見我們說隊列A/MDB A和隊列B/MDB B.

當有高負載的系統需要優先考慮即將到來的消息在隊列中,在隊列B.爲什麼消息?上queue的消息需要儘可能快處理越好,因此MDB A需要「所有的」分貝,CPU資源等

你有關於如何解決這一個乾淨的方式有什麼建議?不那麼幹淨可以工作,以及...

我的生產服務器的WebSphere Application Server 7,使用的SIBus的消息傳遞。 WebSphere MQ可以是一個選項。

感謝您的任何建議!

+0

不是100%肯定它,但是不是JMS消息優先級應該處理那個嗎? (我不確定每個隊列或每個消息傳遞引擎是否處理優先級) – 2012-01-11 14:08:13

+0

@AviramSegal我已經假定JMS消息優先級是按每個隊列處理的,但現在我有疑問了。我真的不能找到這個答案... – DagR 2012-01-11 20:52:06

+1

規範是不是很清楚,我會盡力驗證你今天晚些時候 – 2012-01-12 05:40:18

回答

2

與人是在該地區的專家調查這個問題後,我得到了一些壞消息:

這可能無法做到。

使用SIB無法完成100%,您只能在單個目的地中區分消息的優先級。

關於WebSphere MQ的,似乎也不能做了,他們只爲隊列優先級的屬性是在集羣中的單個隊列,我猜不會幫你的時候。

所以,可悲的是,這可能無法做到,如果你需要優先考慮你可能需要改變你的架構有點消息。 也許是一個帶選擇器的單個隊列。然後你可以優先考慮某種類型的消息。

+0

謝謝!這是我認爲沒有什麼大問題。我通過在隊列深度達到特定隊列的閾值時暫時暫停MDB來處理此問題(您可能已經猜到了http://stackoverflow.com/questions/8819169/stop-mdb-from-receiving-messages) – DagR 2012-01-13 05:28:58