我在oracle中创建了一个AQ,并用
Java编写了2个JMS使用者来监听队列.我有时观察到如果我在队列中产生一些消息;队列中出队消息的计数大于排队的消息数.这意味着一些消息被消耗了两次.
我创建了具有属性的队列: – multiple_consumers =>假
JMS消费者正在使用CLIENT_ACKNOWLEDGE模式
请帮助我了解这种行为的可能原因及其解决方案.因此,我可以复制问题并解决上述问题,并确保排队的消息数等于多个JMS消费者收听同一AQ时出列的消息数.
在没有看到您的
代码的情况下,CLIENT_ACKNOWLEDGE通常会说您正在手动发送确认.如果您不发送确认,则不会
删除该消息,并且代理将在稍后阶段尝试重新发送该消息(例如,当您重新启动连接或类似时).这可能是您担心的原因.