java - ActiveMQ Spring CLIENT_ACKNOWLEDGE 不起作用

标签 java spring activemq

我似乎无法弄清楚这一点... 这在 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>

我缺少什么吗?

最佳答案

Spring 中的 DMLC 在您的配置中启用了事务,而在 Java 示例中,您禁用了事务。事务优先于任何确认模式。因此,选择是否应该选择交易或客户端确认,因为您不能同时选择两者。

关于java - ActiveMQ Spring CLIENT_ACKNOWLEDGE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29782713/

相关文章:

java - 在 Scala 中调用 WebSocket 中的方法

java - DeleteOnExit jvm 关闭

java - 添加和显示列表对象

activemq - yum install activemq activemq-client - 没有可用的软件包 activemq

Activemq 无法在我的 Ubuntu VM 上启动

java - 持久化 Java 对象的最简单方法是什么?

java - 在 java 中只允许在代码中保留分号。幕后发生了什么?编译器和 JVM 如何对待它们?

java - 在 spring boot 中设置 dbunit 模式

java - ActiveMQ 给出 : "Could not connect to broker URL: tcp://localhost:61616" after around 10 000 messages

java - 接口(interface)的意图与具有抽象方法的抽象类有何不同?