【发布时间】:2016-03-03 13:30:00
【问题描述】:
即使确认模式设置为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的意思是我需要手动确认消息?
有什么想法吗?
谢谢,米凯尔
【问题讨论】:
标签: java jms spring-jms