1

このリンクがデッドレターチャネルと言うように、メッセージのヘッダーに最大再配信時間が含まれていることがわかりました。

Starting with 2.6: The header CamelRedeliveryMaxCounter, which is also defined on the Exchange.REDELIVERY_MAX_COUNTER, contains the maximum redelivery setting

だから私Exchange.REDELIVERY_MAX_COUNTERは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回再配信しようとしていますが、Exchange.REDELIVERY_MAX_COUNTER6回にリセットしたため、メッセージは6回再配信されると想定されていますが、代わりに2回だけ再配信されます。しかし、値を出力するので、出力に 6 が表示されmaxます。誰が何が間違っているのか教えてもらえますか?

4

1 に答える 1