在JMS队列中实现ActiveMQ的粘性会话(消息组)

时间:2011-10-05 04:17:09

标签: java queue jms

我正试图离开ActiveMQ,但我们想保留的一个功能是消息组。通过向JMS头添加会话ID,ActiveMQ将具有相同ID的队列上的所有其他消息路由到同一个消费者(我们的消费者可能在不同的机器上),允许接收者将消息组视为一个工作单元。

我的第一个想法就是将会话置于CLIENT_ACKNOWLEDGE模式。我的想法是,如果消费者A查看标题并看到它不是它处理的ID,那么它可能只是丢弃消息而消费者B会捡起它。我已经遇到了几个问题,包括ActiveMQ的完美问题,我读的越多,看起来就越不像开始时设计的那样。

我能想到的一个想法是拥有一个调度队列,然后将消息路由到每个消​​费者,因为缺少更好的单词,子队列并管理会话ID本身与子队列的匹配。

在我走下这条道路之前,我们已经对它提出了更多的复杂性,因此我们想知道,在CLIENT_ACKNOWLEDGE中有什么我缺少的吗?或者其他什么我应该先尝试?