我似乎无法弄清楚这一点...... 这在JAVA中非常有效:
// Create a Session
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); // << means we have to acknowledge that we processed it!
但是当我创建一个Spring Bean时,我无法让CLIENT_ACKNOWLEDGE工作。它似乎是自动确认所有消息。
<bean id="testListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer" lazy-init="true">
<property name="connectionFactory" ref="amqConnectionFactory" />
<property name="destinationName" value="MyQueue" />
<property name="messageListener" ref="testListener" />
<property name="autoStartup" value="false"/>
<property name="sessionAcknowledgeModeName" value="CLIENT_ACKNOWLEDGE"/>
<property name="sessionTransacted" value="true"/>
<property name="concurrency" value="2"/>
</bean>
我遗失了什么?
答案 0 :(得分:0)
Spring中的DMLC在您的配置中启用了事务,而在Java示例中,您禁用了事务。事务会覆盖任何确认模式。因此,选择是否应该使用交易或客户交易,因为您无法同时选择这两种交易。