amazon-web-services - SQS消息失败时如何保持活动状态?
问题描述
我正在使用 SQS 来保存 http 请求。当请求失败时,如何保持消息处于活动状态(在队列中)以重新处理,而没有另一个进程抓住它?
解决方案
典型的流程是:
- 一条消息被放入Amazon SQS 队列
- 工作进程调用
ReceiveMessage()
以从队列中检索消息 - 该消息被暂时标记为“不可见”(飞行中),以便其他工作人员看不到该消息
- 如果worker成功处理消息,它会调用
DeleteMessage()
永久删除消息 - 如果工作人员在Invisibility Timeout 期限内没有响应(例如,如果它失败了),则消息将重新出现在队列中。然后该消息可以被另一个工作人员获取。
- 如果已配置死信队列,则从队列中检索超过定义次数的消息将被移至死信队列以进行单独调查或重新处理。
您的问题似乎适合使用死信队列的场景。
推荐阅读
- docker - 如何避免docker主机和docker容器同时访问串口?
- c# - 向一个 C# 项目添加多个服务引用
- r - 远程连接的防火墙配置
- vba - 什么是排序字段的 add2
- python - 使用 sklearn 对我的数据集的一列进行二值化后,结果不正确。代码哪里错了?
- wordpress - 使用 Wordpress 和 Ionic 同步数据以供离线使用
- sql - SQL GROUP BY 语句 csv 导出显示不正确的总和
- mysql - 如何将姓名号码电子邮件ID添加到我的mysql数据库
- amazon-web-services - 来自自定义资源的云形成函数
- android - 如何使用 Firebase 17.0.1 执行 INSTANCE_ID_EVENT 操作?