【发布时间】:2019-02-02 20:30:46
【问题描述】:
我已经设置了 Apache camel,我在其中使用来自一个队列的消息并对其进行某种操作,然后将其传输到另一个队列。
现在如果出现异常,那么我希望它应该回滚,然后在 6 次尝试发送到死信队列后,当前回滚发生 5-6 次,但我的消息没有传输到死信队列。
这里会发生什么--> 队列1-->(消耗)-->操作(抛出异常)-->回滚-->再次队列1-->(消耗)-->操作(抛出异常)-->回滚-->...发生这种情况5-6次,然后我的信息就丢失了
我不知道我的消息要去哪里以及为什么它会丢失,并且从我的 Active MQ GUI 中我可以看到它已出列。
@Bean
public RedeliveryPolicy redeliveryPolicy() {
RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
redeliveryPolicy.setMaximumRedeliveries(2);
redeliveryPolicy.setMaximumRedeliveryDelay(10000);
redeliveryPolicy.setRedeliveryDelay(10000);
return redeliveryPolicy;
}
---------------------Route extends SpringRouteBuilder-------------------
onException(MyException.class)
.markRollbackOnly()
.redeliveryPolicy(redeliveryPolicy)
.useExponentialBackOff()
.handled(true)
from("jms:queue:Queue1")
.process(new Processor(){
public void process(Exchange ex){
throw new RuntimeException();
}
}).to("jms:queue:myQueue)
【问题讨论】:
标签: apache-camel jms activemq