写点什么

Amazon SQS 支持从死信队列重新生成消息

作者:Renato Losio

  • 2023-08-11
    北京
  • 本文字数:1125 字

    阅读完需:约 4 分钟

Amazon SQS支持从死信队列重新生成消息

亚马逊云科技最近宣布在SQS中支持使用AWS SDK或命令行接口进行死信队列的重驱动。新功能允许开发人员将未消费的消息从死信队列中移出并转移回其源队列。


当出现错误时,SQS 会将未消费的消息转移至死信队列(dead-letter queue,DLQ),从而能够让开发人员探查未成功消费的消息并调试应用程序的故障。亚马逊云科技的开发人员倡导者Sébastien Stormacq解释到:


每当消费者应用捡取一个要处理的消息时,消息的接收计数就会加 1。当 ReceiveCount > maxReceiveCount 时,Amazon SQS 会将消息移动到指定的 DLQ 中,供人工分析和调试。我们通常会将警报与 DLQ 关联起来,以便于在这种情况发生时发送通知。


在失败的消息调试完成或消费者应用能够消费它时,新的重驱动功能就会将消息移回源队列,从而能够在分布式系统中以编程的方式管理大规模未消费消息的生命周期。


过去,这只能通过在控制台手动处理才能实现。Ampt 公司的 CEO 兼创始人 Jeremy Daly 当时这样写到


这不是一个特性,这不是一个 API,而是一种只能在 AWS Console 中才能获取的“体验”。我想要它吗?想要!但是,我想登录 AWS Console 来使用它吗?绝对不想要!


要重新处理 DLQ 消息,开发人员可以使用如下的任务:StartMessageMoveTask 用于从死信队列启动新的消息移动任务;CancelMessageMoveTask 用于取消消息移动任务;ListMessageMoveTasks 用于获取特定源队列最近的消息移动任务(最多 10 个)。


社区对这项特性给出了积极的反馈,MUSIC Tribe 的云计算和平台主管 Tiago Barbosa评论说:


这是一个很好的改进。我一直不喜欢使用 DLQ,其中一个原因就是需要建立一种机制来重新处理最终出现在 DLQ 中的条目。


Curantis Solutions 的 CTO Benjamen Pyle撰写了一篇文章,介绍了如何使用 Golang 和 Step Functions 来重新驱动消息


在 DLQ 的配置中,可以使用自定义目的地选项的 ARN 来指定将消息发送回源队列还是其他队列。PostNL 首席工程师、AWS Serverless Hero Luc van Donkersgoed 在推特上写到:


如果能重新驱动到原始队列就好了。这一点非常棒,因为它允许我们指定任意的目标队列。这使得以前完成此项任务的 Lambda Functions 瞬间化为乌有。


文档强调了一些限制:SQS 仅支持标准队列的死信队列的重新驱动,不支持在重新生成它们时过滤和修改消息。除此之外,一个 DLQ 重新驱动任务最多可运行 36 小时,每个账户最多可以有 100 个活跃的重新驱动任务。有些开发人员质疑其缺少对Step Functions的支持


SQS 不会自动创建 DLQ,队列必须在接收到未消费的消息之前进行创建和配置。


原文链接:

Amazon SQS Supports Reprocessing Messages from Dead-Letter Queue


相关阅读:

大模型竞争突然升级!亚马逊CEO亲自监督、组建新的核心技术团队,集中优势资源打造“最具野心”的大语言模型

亚马逊云科技开源PBAC领域特定语言Cedar

2023-08-11 10:067130

评论

发布
暂无评论
发现更多内容

谈谈对分布式事务的一点理解和解决方案

Throwable

分布式 分布式事务 架构设计

如何搭建Hive 环境

Rayjun

大数据 hive

玛雅密码社区不忘初心 共筑未来通证新经济

Geek_116789

iOS - CollectionViewCell对应不同flow layout的实例

teoking

ios

ARST Week7

时之虫

ARTS 打卡计划

大话设计模式 | 4. 装饰模式

Puran

C# 设计模式

不会有人还不知道全文检索工具Lucene怎么用吧?文字长文教程

给你买橘子

Java 搜索引擎 lucene 程序员 开发工具

基础篇:Object对象

csc

Java Java 25 周年

SpringBoot2.x入门:应用打包与启动

Throwable

springboot

Newbe.Claptrap 框架中为什么用 Claptrap 和 Minion 两个词?

newbe36524

Docker .net core netcore ASP.NET Core

百万级别数据Excel导出优化

Throwable

架构设计 springboot

修炼我们的智慧之眼

J.Smile

认知提升

数据分析之AB testing实战(附Python代码)

JackTian

Python 编程 程序员 数据分析 AB testing实战

架构师训练营第六周作业

烟雨濛濛

SpringBoot 入门:02 - 实现 MVC

封不羁

Java spring springboot

【计算机网络】网络层——路由器与路由选择协议

烫烫烫个喵啊

计算机网络 网络层

DolphinScheduler-1.3.0-dev功能体验

Eights

大数据 hadoop

架构师训练营第六周总结

陈靓-哲露

云原生实践系列:概述

孤岛旭日

Serverless 微服务 Service Mesh 服务架构

架构师训练营第六周总结

烟雨濛濛

Vagrant 快速入门

FeiLong

vagrant

基础篇:JAVA基本类型

csc

Java Java 25 周年

11个提高产品经理工作效率的必备工具,果断收藏

马踏飞机747

大数据 设计 产品经理

看动画学算法之:排序-冒泡排序

程序那些事

算法 动画 排序算法 轻松学

并行流ParallelStream中隐藏的陷阱

Throwable

Java

3W字干货深入分析基于Micrometer和Prometheus实现度量和监控的方案

Throwable

Java 监控 Grafana Prometheus springboot

list vs tupple

Leetao

Python 数据结构 Python基础知识

关于架构的几件小事:架构概述(1)

北风

架构 架构设计 架构师 架构设计原则

“新基建”来了!云南三年投资3776亿!

CECBC

架构师训练营第六周作业

Melo

北京区块链规划重点发展海淀朝阳通州等区,加大对代币监管力度

CECBC

北京行动计划 四个高地 需求导向 为政务服务

Amazon SQS支持从死信队列重新生成消息_Serverless_InfoQ精选文章