什麼是聚合來自許多不同來源(實際上是隊列/主題)的消息到單個隊列/主題然後消耗它的最佳方式。我試圖設計一個應用程序,使用weblogic從JMS中的不同主題接收消息。將來自多個目標的JMS消息集中到單個隊列
1
A
回答
1
你可以寫你自己的「聚合器」作爲一個獨立的Java應用程序:
- 對於每個隊列/主題都在自己的線程讀者。
每個閱讀器再次在「聚合隊列」上發送其收到的消息。
有另一個線程來監聽「聚合隊列」。
作爲一種變體,您可以使用JVM隊列(如java.util.concurrent.ArrayBlockingQueue
)作爲「聚合隊列」。這是更快的,不需要另一個MQ隊列,不需要網絡帶寬,但它不是持久的。
另一個想法是使用「消息驅動bean(MDB)」爲每個傳入隊列/主題:
- 同樣,每個這些的MDB的剛讀取消息,並將其重新發送到「聚合隊列「。
- 讓另一個MDB在「聚合隊列」上偵聽。
0
關於質量要求的一些建議。我相信你必須考慮他們。 他們將高度關注您的技術解決方案。
是指消息丟失是否可以接受? 客戶端可以考慮。 例如內存隊列坐在中間,例如傳入隊列1 ... n - >內存中的ArrayBlockingQueue - >傳出隊列。 ArrayBlockingQueue中的數據將在應用崩潰時丟失。
是單個傳出隊列可接受的消息副本嗎? 我會建議是的。 設置適用級別PossibleDuplicateFlag使客戶端意識到這一點。
差異傳入隊列每秒傳入消息的速度有多快? 一個隊列會話只有一個uniqe線程。性能必須提前考慮。
相關問題
- 1. 彈簧集成:接收來自多個JMS目標的消息
- 2. 多個集羣正在偵聽相同的JMS消息隊列
- 3. Apache Camel:如何使用來自兩個或多個JMS隊列的消息
- 4. Rabbitmq:優先消費來自多個隊列的消息
- 5. Java:將消息發送到多線程的JMS隊列
- 6. JMS隊列消息接收訂單
- 7. JMS消息生產者不會將消息發送到隊列
- 8. JMS隊列接收消息?
- 9. JMS消息回滾到隊列
- 10. JMS消息重新傳遞到隊列
- 11. 如何接收來自Glassfish的消息(v3)JMS隊列
- 12. 統計JMS隊列中的消息數
- 13. 替換jms隊列中的消息
- 14. JMS隊列中的延遲消息
- 15. Spring JMS集成單元測試在隊列上留下消息
- 16. 配置MSMQ路由消息從一個隊列到另一個隊列(目標)
- 17. msmq單個隊列中的多個消息類型
- 18. 使用多線程從JMS隊列中消費消息
- 19. 發送多條消息到Mule的JMS隊列
- 20. 將測試消息發佈到JMS隊列的工具?
- 21. 將消息發送到完整的JMS隊列
- 22. 將消息從一個jms隊列路由到另一個隊列時的事務提交延遲
- 23. JMS隊列客戶端onMessage()沒有收到來自發件人的消息
- 24. 消息隊列中的多條消息
- 25. NATS發佈者可以將單個消息發送到多個隊列嗎?
- 26. 使用JBoss將消息發佈到遠程JMS隊列
- 27. Java內部消息隊列/ JMS
- 28. 發送XML消息給SONIC JMS隊列
- 29. 在JMS隊列上發佈消息?
- 30. 在JMS隊列上測試消息