是否有可能让JMS队列等待,直到它在收到下一条消息之前收到消息确认

时间:2017-04-03 15:32:03

标签: java jms openmq

我已经设置了一个由单个生产者提供的JMS队列,并由8个不同的消费者使用。

我想配置我的队列/代理,以便传递给消费者的一条消息阻塞队列,直到消费者完成处理消息。在处理此第一条消息期间,以下消息可能无法传递给其他消费者。无论哪个消费者处理哪个消息都是无关紧要的,并且同一个消费者可以接受连续消费许多消息,只要它消失,另一个消费者能够获取剩余的未处理消息。

为了做到这一点,我已经将所有消费者配置为使用CLIENT确认模式,并且我对它们进行了编码,以便仅在消息处理结束时调用message.acknowledge()

我的理解是,这应该足以满足我的要求。

然而,我显然是错的,因为看起来我的brojer(OpenMQ)正在尽快向消费者传递消息,而无需等待消费者的确认。结果,我得到了多个并行处理的消息,每个消费者都有一个消息。

我显然做错了什么,但我无法弄清楚是什么。

作为一种解决方法,我认为我可以创建一个持久的订阅,并在我的所有消费者之间共享一个固定的客户端ID。它可能只允许一个消费者连接到经纪人,但我不能感觉这是一个相当丑陋的解决方法。

有没有人知道如何配置我的经纪人和/或我的客户来实现这一目标?

0 个答案:

没有答案