0

テストシナリオで AsyncProcessor を使用しようとしましたが、ルートを介して実行されるメッセージは 1 つだけであると予想していましたが、2 つあるようです。

ログに

Test0
Test1

なぜ2つのメッセージがあるのですか?

from("quartz:test?trigger.repeatCount=1&trigger.repeatInterval=100").setBody(simple("Test"))

            .process(new AsyncProcessor() {

                private volatile int i;

                public void process(Exchange exchange) throws Exception {
                    AsyncProcessorHelper.process(this, exchange);
                }

                public boolean process(final Exchange exchange, final AsyncCallback callback) {
                    new Thread(new Runnable() {

                        public void run() {
                            exchange.getOut().setBody(exchange.getIn().getBody(String.class) + (i++), String.class);
                            callback.done(false);
                        }
                    }).start();
                    return false;
                }
            })
                .process(new Processor() {

                public void process(Exchange exchange) throws Exception {
                    org.slf4j.LoggerFactory.getLogger(Tests.class).info(exchange.getIn().getBody(String.class));
                }
            });
4

1 に答える 1

2

一度だけ実行したい場合は、設定しますtrigger.repeatCount=0

于 2012-06-11T03:44:28.540 に答える