首页 文章

Apache Camel:完成聚合交换后的完整交换

提问于
浏览
1

在我的Apache Camel应用程序中,我有一个非常简单的路径:

from("aws-sqs://...")
    .aggregate(constant(true), new AggregationStrategy())
    .completionSize(100)
    .to("SEND_AGGREGATE_VIA_HTTP");

也就是说,它从AWS SQS接收消息,将它们分批分组,并通过HTTP在某处发送它们 .

进入聚合阶段时,来自SQS的消息交换成功完成,此时 SqsConsumer 将其从队列中删除 .

问题是聚合交换可能会发生某些事情(可能会发送错误),并且消息将丢失 . 我真的希望这些原始交换成功完成(消息从队列中删除)只有当他们所在的聚合交换也成功完成时(一批消息被传递) . 有没有办法做到这一点?

谢谢 .

1 回答

  • 1

    您可以将 deleteAfterRead 设置为 false 并在您获得解决方法之后手动删除这些消息,但我没有看到更好的方法 .

相关问题