7

我在 oracle 中创建了一个 AQ,并在 Java 中编写了 2 个 JMS 消费者来监听队列。我有时观察到,如果我在队列中产生一些消息;来自队列的出队消息的计数大于入队的消息。这意味着某些消息被消费了两次。

我创建了具有属性的队列:- multiple_consumers => FALSE

JMS 消费者正在CLIENT_ACKNOWLEDGE mode

请帮助我了解这种行为的可能原因及其解决方案。因此,我可以复制问题并解决上述问题,并确保在多个 JMS 消费者监听相同 AQ 的情况下,入队的消息数等于出队的消息数。

4

1 回答 1

3

在没有看到您的代码的情况下,CLIENT_ACKNOWLEDGE通常表示您正在手动发送确认。如果您不发送确认,则消息不会被删除,并且代理将尝试在稍后阶段重新发送它(例如当您重新启动连接或类似时)。这可能是您担心的原因。

于 2013-05-11T07:46:39.137 回答