java - Apache Camel 立即从 SQS 读取
问题描述
我有非常庞大的骆驼管道,它从使用来自 SQS 的消息开始。整个过程所需的时间各不相同。从 5 秒到 30 分钟,这里很难猜。
我想要达到的目标:
- 不要猜测可见性超时大小,只要消息被消费就从 SQS 中删除消息。
我已经尝试过的:
- 尝试过 Camel 选项 deleteAfterRead=true -> 没有帮助,因为如文档中所述:Delete message from SQS after it has been read(并由路由处理)。而且我有巨大的管道。所以处理的需求在这里失败。
- 试图增加可见性超时,但正如我所说,这只是一个猜谜游戏,我想开发更可靠的解决方案。
谢谢你的帮助!
解决方案
如果您没有完成处理它,您当然不应该在使用它后立即删除它,因为如果您的应用程序崩溃,您将丢失该消息。
如果您意识到您的处理时间接近原始可见性超时,您应该做的是手动延长可见性超时。不确定如何在 Camel 中实现它,但我们之前已集成到默认值中springframework.cloud.aws.messaging
:https ://github.com/Mercateo/sqs-utils
推荐阅读
- c# - InvalidOperationException:无法创建“Microsoft.AspNetCore.Http.HttpContext”类型的实例
- javascript - 如何拒绝包含日期格式的非连续字符的字符串
- php - 如何将我的实体字段连接到同一个实体?
- java - 将 Apache DefaultHttpClient 替换为 HttpClientBuilder 会导致“不支持 http 协议”异常
- python - 创建另一个模型时创建组
- php - 使用 PHP 在 MySQL 中嵌套 JSON 存储
- mysql - JOIN 中的随机元素
- arrays - ReactJS 从地图项向模式发送数据
- linux-kernel - Silabs Si5340:如何为其中一个芯片输出定义时钟
- ios - 去抖属性包装器