将JMS消息从多个目标聚合到单个队列

时间:2013-07-11 16:09:38

标签: jms weblogic jms-topic

将来自许多不同来源(实际上是队列/主题)的消息聚合到单个队列/主题然后使用它的最佳方法是什么。我正在尝试使用weblogic设计一个应用程序来接收来自JMS中不同主题的消息。

2 个答案:

答案 0 :(得分:1)

您可以将自己的“聚合器”编写为独立的Java应用程序:

  • 对于每个队列/主题,都有一个读者在自己的线程中。
  • 每个读者在“聚合队列”上再次发送收到的消息。

  • 让另一个线程收听“聚合队列”。

作为变体,您可以使用JVM队列(如java.util.concurrent.ArrayBlockingQueue)作为“聚合队列”。这样更快,不需要另一个MQ队列,不需要网络带宽,但它不是持久的。


另一个想法是为每个传入队列/主题使用“消息驱动bean(MDB)”:

  • 同样,每个MDB只读取消息并将其重新发送到“聚合队列”。
  • 让另一个MDB监听“聚合队列”。

答案 1 :(得分:0)

关于质量要求的一些建议。我相信你必须考虑他们。 他们将与您的技术解决方案高度相关。

  1. 消息丢失可以接受吗? 客户ack可以考虑。 例如内存队列位于中间,例如传入队列... n - >内存中的ArrayBlockingQueue - >传出队列。当应用程序崩溃时,ArrayBlockingQueue中的数据将丢失。

  2. 是单个传出队列可接受的重复邮件吗? 我建议是的。 设置适用级别PossibleDuplicateFlag以使客户端意识到这一点。

  3. 差异传入队列每秒传入的消息有多快? 一个队列会话只有一个uniqe线程。必须提前考虑表现。