Apache Camel立即从SQS读取

eblbsuwk  于 2023-01-13  发布在  Apache
关注(0)|答案(2)|浏览(120)

我有一个非常庞大的 Camel 流水线,它从消费来自SQS的消息开始。整个过程所需的时间是不同的。从5秒到30分钟,很难猜测这里。
我想要达到的目标:
1.不要猜测可见性超时大小,只要在消息用完后立即从SQS中删除消息。
我已经试过了:
1.尝试Camel选项deleteAfterRead=true -〉没有帮助,因为如文档中所述:**在消息被读取(并被路由处理)后从SQS中删除消息。**并且我有巨大的管道。所以处理的需求在这里失败。
1.尝试增加可见性超时,但正如我所说,这只是一个猜谜游戏,我想开发更可靠的解决方案。
感谢您的帮助!

nwlqm0z1

nwlqm0z11#

如果您没有处理完消息,当然不应该在使用消息后立即将其删除,因为如果应用程序崩溃,您将丢失消息。
如果你意识到你的处理时间已经接近原始的可见性超时,你应该做的是手动延长可见性超时不确定你会如何在Camel中实现它,但是我们之前已经集成到默认的springframework.cloud.aws.messaging中:https://github.com/Mercateo/sqs-utils

xeufq47z

xeufq47z2#

一个选项是添加异常处理程序,并将异常标记为在OnExceptionDefinition上调用handled(true)已处理。
另一种解决方法是将消息发送到wireTap并在那里进行处理,这将结束路由并导致deleteMessage被发送到队列。
我自己也在寻找其他的选择。

相关问题