gpt4 book ai didi

java - 为什么 JMS 消息会自动确认

转载 作者:行者123 更新时间:2023-11-30 07:33:10 24 4
gpt4 key购买 nike

即使确认模式设置为 CLIENT_ACKNOWLEDGE,为什么在 onMessage() 监听器方法返回后仍会确认 JMS 消息?

如果查看 AbstractMessageListenerContainer 类中的 commitIfNecessary 方法,您可以看到以下内容:

protected void commitIfNecessary(Session session, Message message) throws JMSException {
// Commit session or acknowledge message.
if (session.getTransacted()) {
// Commit necessary - but avoid commit call within a JTA transaction.
if (isSessionLocallyTransacted(session)) {
// Transacted session created by this container -> commit.
JmsUtils.commitIfNecessary(session);
}
} else if (message != null && isClientAcknowledge(session)) {
message.acknowledge();
}
}

调试后,我确认调用了 message.acknowledge()

我认为 CLIENT_ACKNOWLEDGE 意味着我需要手动确认消息?

有什么想法吗?

谢谢,迈克尔

最佳答案

在此上下文中,消息监听器容器是客户端,而不是您的监听器。

如果您希望手动确认(可能在收到大量消息后),请不要使用监听器容器;您可以将 JmsTemplate.execute()SessionCallback 结合使用并创建您自己的使用者。

关于java - 为什么 JMS 消息会自动确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com