分布式消息服务DMS如何实现死信消息的消费

(本文部分内容节选自华为云帮助中心的分布式消息服务(DMS)服务的产品介绍)

死信消息是什么

死信消息是指无法被正常消费的消息。分布式消息服务DMS支持对消息进行异常处理。当消息进行多次重复消费仍然失败后,DMS会将该条消息转存到死信队列中,有效期为72小时,用户可以根据需要对死信消息进行重新消费。消费死信消息时,只能消费该消费组产生的死信消息。全局有序的普通队列的死信消息依然按照先入先出(FIFO)的顺序存储在死信队列中。

如何消费死信消息

消费指定消费组产生的死信消息。可同时消费多条消息,每次消费的消息负载不超过512KB。仅NORMAL队列和FIFO队列可以开启死信消息,因为只有NORMAL队列和FIFO队列可消费死信消息。

URI

GET /v1.0/{project_id}/queues/{queue_id}/groups/{consumer_group_id}/deadletters?max_msgs={max_msgs}&time_wait={time_wait}&ack_wait={ack_wait}

参数说明请参见下表:


如何确认已消费死信消息

在消费者消费死信消息期间,死信消息仍然停留在队列中,但死信消息从被消费开始的30秒内不能被该消费组再次消费,若在这30秒内没有被消费者确认消费,则DMS认为死信消息未消费成功,将可以被继续消费。

如果死信消息被确认消费成功,该死信消息将不能被该消费组再次消费,死信消息的保留时间为72小时(除非消费组被删除),72小时后会被删除。

消息批量消费确认时,必须严格按照消息消费的顺序提交确认,DMS按顺序判定消息是否消费成功,如果某条消息未确认或消费失败,则不再继续检测,默认后续消息全部消费失败。建议当对某一条消息处理失败时,不再需要继续处理本批消息中的后续消息,直接对已正确处理的消息进行确认。

注意,仅NORMAL队列和FIFO队列可以开启死信消息,因为只有NORMAL队列和FIFO队列可消费死信消息。

URI

POST /v1.0/{project_id}/queues/{queue_id}/groups/{consumer_group_id}/deadletters/ack


以上就是对分布式消息服务DMS如何实现死信消息的消费的介绍,想要了解更多,欢迎点击分布式消息服务DMS查看。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,273评论 19 139
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,789评论 8 265
  • 利用RabbitMQ集群横向扩展能力,均衡流量压力,让消息集群的秒级服务能力达到百万,Google曾做过此类实验;...
    有货技术阅读 3,562评论 0 1
  • 自11月底入职以来,受到两任领导的恩惠,第一任领导将我和同事两人调到总公司做运营,自此摆脱了混日子,坐吃等死的办公...
    郭斯特DTD阅读 357评论 1 1
  • 写作停了两天 ,但这两天都没有真正地停下,看武志红老师的文章,留言做笔记写想法,感觉还需要琢磨和沉淀!
    sanyaojing阅读 135评论 0 0