Java 骆驼重置重新交付\u最大\u计数器为0或n不工作

Java 骆驼重置重新交付\u最大\u计数器为0或n不工作,java,activemq,apache-camel,Java,Activemq,Apache Camel,正如这个链接所说,我知道邮件的标题包含最大的重新传递时间 从2.6开始:也在Exchange.REDELIVERY\u MAX\u计数器上定义的标头CamelRedeliveryMaxCounter包含最大再交付设置 因此,我尝试将Exchange.REDELIVERY\u MAX\u计数器设置为6 arg0.getIn().setHeader(Exchange.REDELIVERY_MAX_COUNTER,6); int max =arg0.getIn().getHeader(Exchange

正如这个链接所说,我知道邮件的标题包含最大的重新传递时间

从2.6开始:也在Exchange.REDELIVERY\u MAX\u计数器上定义的标头CamelRedeliveryMaxCounter包含最大再交付设置

因此,我尝试将
Exchange.REDELIVERY\u MAX\u计数器设置为6

arg0.getIn().setHeader(Exchange.REDELIVERY_MAX_COUNTER,6);
int max =arg0.getIn().getHeader(Exchange.REDELIVERY_MAX_COUNTER, Integer.class);
System.out.println(max);
这是我的全部代码

public class ActivemqRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {

   from("activemq:queue:MyQueue")
            .onException(IOException.class)
                .maximumRedeliveries(2)
                .redeliveryDelay(4000)
                .handled(true)
                .beanRef("msgPro2","SendMail")
                .to("activemq:queue:MyQueue.DLQ")
                .end()
            .transacted()
            .process(new Processor() {
                      @Override
                      public void process(Exchange arg0) throws Exception {
                      arg0.getIn().setHeader(Exchange.REDELIVERY_MAX_COUNTER,6);
                      int max = arg0.getIn().getHeader(Exchange.REDELIVERY_MAX_COUNTER, Integer.class);
                      System.out.println(max);
                      /*error producing code*/
                      }}
                    );

由于
Processor()
中存在错误,消息尝试重新传递2次,但我将
交换.REDELIVERY\u MAX\u计数器
重置为6次,因此消息假定重新传递6次,但它不会发生,而是只重新传递了2次。但我可以在输出中看到6,因为我打印了
max
value。有人能告诉我怎么回事吗

该属性是只读属性。如果您想以动态方式多次重新交付,可以使用retryWhile。

这太愚蠢了。如果我使用retryWhile,我无法访问REDELIVERY\u计数器,因此我无法执行.retryWhile(简单(${header.REDELIVERY\u COUNTER}<${property.MAX\u REDELIVERY\u COUNTER})))