我正在使用带有yaml自动配置的camel-activemq-starter。当我在消费者上使用"?transacted=true“标志时,消息转到DLQ。我正在寻找的行为是,如果camel路由中存在异常,则不从队列中删除消息。将"transacted=true“标志与camel-sjms和camel-jms一起使用,可以达到预期的效果。提前感谢您的帮助!下面是yaml配置。
camel:
component:
reactive-streams:
thread-pool-max-size: 5
activemq:
broker-url: "tcp://localhost:61616"
connection-factory: ActiveMQConnectionFactory
transaction-manager: JmsTransactionManager下面是路由在gneral中的样子:
fromF("activemq:queue:queue?transacted=true")
.routeId("stopThisRoute")
.process(exchange -> {
----- something ------
})
-------
throw new IllegalStateException();
========
})
.end();发布于 2020-07-29 01:30:58
添加ack模式修复了camel-activemq-starter的此问题。这可能不是“问题”,只是不同的行为。
camel:
component:
activemq:
broker-url: "tcp://localhost:61616"
connection-factory: CachingConnectionFactory
transacted: true
transaction-manager: JmsTransactionManager
acknowledgement-mode-name: CLIENT_ACKNOWLEDGEhttps://stackoverflow.com/questions/63025401
复制相似问题