在我的Apache Camel应用程序中,我有一个非常简单的路径:
from("aws-sqs://...")
.aggregate(constant(true), new AggregationStrategy())
.completionSize(100)
.to("SEND_AGGREGATE_VIA_HTTP");
也就是说,它从AWS SQS接收消息,将它们分批分组,并通过HTTP在某处发送它们 .
进入聚合阶段时,来自SQS的消息交换成功完成,此时 SqsConsumer
将其从队列中删除 .
问题是聚合交换可能会发生某些事情(可能会发送错误),并且消息将丢失 . 我真的希望这些原始交换成功完成(消息从队列中删除)只有当他们所在的聚合交换也成功完成时(一批消息被传递) . 有没有办法做到这一点?
谢谢 .
1 回答
您可以将
deleteAfterRead
设置为false
并在您获得解决方法之后手动删除这些消息,但我没有看到更好的方法 .