总结承认骆驼兔子的消息

时间:2014-08-19 12:42:20

标签: apache-camel rabbitmq

我在camel中使用rabbitmq组件。我有以下路线:

        public void configure() throws Exception {
                from("rabbitmq://localhost:5672/test_op?queue=out_queue&routingKey=test_out&username=guest&password=guest" +
                        "&autoAck=false&durable=true&exchangeType=direct&autoDelete=false&exchangePattern=InOut")
                        .aggregate(constant(true), new ArrayListAggregationStrategy())
                        .completionSize(2000).completionTimeout(60000).eagerCheckCompletion()                       
                        .process(new Processor() {
                            @Override
                            public void process(Exchange exchange) throws Exception {
                                Message m = exchange.getIn();
                                org.apache.camel.TypeConverter tc = exchange.getContext().getTypeConverter();
                                String strValue = tc.convertTo(String.class, m.getBody());
                                System.out.println("[[out_queue]]: "  + strValue);
                            }
                        });
            }

问题是aggregate的使用即使在调用process()之前也向rabbitmq确认了消息。我想仅在process()执行成功时确认消息,而不是在调用aggregate时确认消息。我怎样才能做到这一点?

仅供参考:没有aggregate此路线按预期工作。这意味着只有在成功执行process()时才会确认消息。

0 个答案:

没有答案