如何使用 camel-activemq-starter 的事务处理标志回滚消息
How to rollback message using transacted flag for camel-activemq-starter
我正在使用带有 yaml 自动配置的 camel-activemq-starter。当我在消费者上使用“?transacted=true”标志时,消息转到 DLQ。如果骆驼路线出现异常,我正在寻找的行为是不从队列中删除消息。使用带有 camel-sjms 和 camel-jms 的“transacted=true”标志,这按预期工作。预先感谢您的帮助!下面是 yaml 配置。
camel:
component:
reactive-streams:
thread-pool-max-size: 5
activemq:
broker-url: "tcp://localhost:61616"
connection-factory: ActiveMQConnectionFactory
transaction-manager: JmsTransactionManager
下面是路线的一般情况:
fromF("activemq:queue:queue?transacted=true")
.routeId("stopThisRoute")
.process(exchange -> {
----- something ------
})
-------
throw new IllegalStateException();
========
})
.end();
添加 ack 模式解决了 camel-activemq-starter 的这个问题。可能它不是“问题”,只是一种不同的行为。
camel:
component:
activemq:
broker-url: "tcp://localhost:61616"
connection-factory: CachingConnectionFactory
transacted: true
transaction-manager: JmsTransactionManager
acknowledgement-mode-name: CLIENT_ACKNOWLEDGE
我正在使用带有 yaml 自动配置的 camel-activemq-starter。当我在消费者上使用“?transacted=true”标志时,消息转到 DLQ。如果骆驼路线出现异常,我正在寻找的行为是不从队列中删除消息。使用带有 camel-sjms 和 camel-jms 的“transacted=true”标志,这按预期工作。预先感谢您的帮助!下面是 yaml 配置。
camel:
component:
reactive-streams:
thread-pool-max-size: 5
activemq:
broker-url: "tcp://localhost:61616"
connection-factory: ActiveMQConnectionFactory
transaction-manager: JmsTransactionManager
下面是路线的一般情况:
fromF("activemq:queue:queue?transacted=true")
.routeId("stopThisRoute")
.process(exchange -> {
----- something ------
})
-------
throw new IllegalStateException();
========
})
.end();
添加 ack 模式解决了 camel-activemq-starter 的这个问题。可能它不是“问题”,只是一种不同的行为。
camel:
component:
activemq:
broker-url: "tcp://localhost:61616"
connection-factory: CachingConnectionFactory
transacted: true
transaction-manager: JmsTransactionManager
acknowledgement-mode-name: CLIENT_ACKNOWLEDGE