本文部分内容节选自华为云帮助中心的分布式消息服务(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}

参数说明请参见下表

参数说明

名称

类型

是否必选

说明

取值范围

project_id

string

项目ID。

N/A

queue_id

string

指定的队列ID。

N/A

consumer_group_id

String

消费组的ID。从查看指定队列的所有消费组的响应消息中获取消费组ID。

N/A

max_msgs

int

获取可消费的死信消息的条数。

说明:

单次消费返回的消息数量可能会少于指定条数,但多次消费最终可获取全部消息。

取值范围:1~10。

默认值:10

time_wait

int

设定消费组中可消费的死信为0时的读取消息等待时间。

如果在等待时间内有新的死信消息,则立即返回消费结果,如果等待时间内没有新的死信消息,则到等待时间后返回消费结果。

取值范围:1~60s

默认值:3s

说明:不带该参数或者配置为空,都默认为3s。

ack_wait

int

commit提交超时时间,在该时间内提交确认,确认有效,如果超过指定时间,系统会报消息确认超时,或handler无效。

取值范围:15~300s

默认值:30s

说明:不带该参数或者配置为空,都默认为30s。

响应参数

参数

类型

描述

message

JSON对象

消息的内容。

handler

string

消息handler。

 

message参数

参数

类型

描述

body

JSON

消息体的内容。

attributes

JSON对象

属性的列表。

 

 

如何确认已消费死信消息

在消费者消费死信消息期间,死信消息仍然停留在队列中,但死信消息从被消费开始的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

参数说明请参见下表:

参数说明

名称

类型

是否必选

说明

project_id

string

项目ID。

queue_id

string

队列ID。

consumer_group_id

string

消费组ID。

 

请求参数和message参数如下表所示:

请求参数

名称

类型

是否必选

说明

message

array

确认消息数组。

 

message参数

名称

类型

是否必选

说明

handler

string

消费时返回的ID。

status

string

客户端处理数据的状态。

取值为“success”或者“fail”。

 

响应参数

响应参数如下表所示:

响应参数

参数

类型

描述

success

int

确认成功的数目(如果为N,则表示前N条死信消息确认成功)。

fail

int

确认失败的数目(如果为N,则表示后N条死信消息确认失败)。

以上就是对分布式消息服务DMS如何实现死信消息的消费的介绍,想要了解更多,欢迎点击分布式消息服务DMS查看:https://www.huaweicloud.com/product/dms.html

分布式消息服务DMS如何实现死信消息的消费的更多相关文章

  1. 分布式消息服务DMS与开源Kafka对比

    分布式消息服务(简称DMS)是一项基于高可用分布式集群技术的消息中间件服务,提供了可靠且可扩展的托管消息队列,用于收发消息和存储消息.那么,比起自建开源的Kafka,分布式消息服务DMS有哪些好处呢? ...

  2. JMS(Java消息服务)入门教程

    什么是Java消息服务 Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建.发送.读取消息等,用于支持JAVA应用程序开发.在J2EE中 ...

  3. 消息中间件--ActiveMQ&JMS消息服务

    ### 消息中间件 ### ---------- **消息中间件** 1. 消息中间件的概述 2. 消息中间件的应用场景 * 异步处理 * 应用解耦 * 流量削峰 * 消息通信   --------- ...

  4. 【9】JMicro微服务-发布订阅消息服务

    如非授权,禁止用于商业用途,转载请注明出处作者:mynewworldyyl 1. JMicro消息服务目前实现特性 a. JMicro只支持发布订阅消息服务,不支持队列式消息服务: b. 不支持消息持 ...

  5. JMS(Java消息服务)入门教程(一)

    什么是Java消息服务 Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建.发送.读取消息等,用于支持JAVA应用程序开发.在J2EE中 ...

  6. 消息服务框架(MSF)应用实例之分布式事务三阶段提交协议的实现

    一,分布式事务简介 在当前互联网,大数据和人工智能的热潮中,传统企业也受到这一潮流的冲击,纷纷响应国家“互联网+”的战略号召,企业开始将越来越多的应用从公司内网迁移到云端和移动端,或者将之前孤立的IT ...

  7. 使用“消息服务框架”(MSF)实现分布式事务的三阶段提交协议(电商创建订单的示例)

    1,示例解决方案介绍 在上一篇 <消息服务框架(MSF)应用实例之分布式事务三阶段提交协议的实现>中,我们分析了分布式事务的三阶段提交协议的原理,现在我们来看看如何使用消息服务框架(MSF ...

  8. 即时消息服务框架(iMSF)应用实例之分布式事务三阶段提交协议的实现

    一,分布式事务简介 在当前互联网,大数据和人工智能的热潮中,传统企业也受到这一潮流的冲击,纷纷响应国家“互联网+”的战略号召,企业开始将越来越多的应用从公司内网迁移到云端和移动端,或者将之前孤立的IT ...

  9. 使用kafka消息队列解决分布式事务(可靠消息最终一致性方案-本地消息服务)

    微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务 本文转自:http://skaka.me/blog/2016/04/21/springcloud1/ 不同于单一 ...

随机推荐

  1. 《网络管理》IP地址管理与子网划分

    IP地址管理——ipmaster ipmaster是一款对IP地址进行管理的软件,使用该软件可以提高网络管理员的工作效率.在大型网络中,使用该软件可以有序且高效地实现大中小型企业网IP地址的分配和管理 ...

  2. ThinkPHP---thinkphp框架介绍

    目录: (1)简述: (2)下载: (3)文件结构: (4)部署: (5)细节问题: 主体: (1)简述 ThinkPHP诞生于2006年初,最初叫FSC.于2007年元旦更名为PHP,同时官网上线. ...

  3. 【原】Mysql常用语句

    1.修改编码方式为UTF-8 ALTER   TABLE   表名  CHANGE  列名  新列名  VARCHAR(255)    CHARACTER  SET  utf8  COLLATE    ...

  4. 数塔(hdoj 2084,动态规划递推)

    在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目 ...

  5. [Python数据结构] 使用 Circular List实现Queue

    [Python数据结构] 使用 Circular List实现Queue 1. Queue队列,又称为伫列(queue),是先进先出(FIFO, First-In-First-Out)的线性表.在具体 ...

  6. Mybatis中collection和association的使用区别

    1. 关联-association2. 集合-collection 比如同时有User.java和Card.java两个类 User.java如下: public class User{ privat ...

  7. Rsync远程同步工具使用

    rsync远程同步工具使用 Rsync(remote synchronize) 是一个远程数据同步工具,可以使用"Rsync算法"同步本地和远程主机之间的文件.Rsync的好处是只 ...

  8. React组件设计技巧

    React组件设计 组件分类 展示组件和容器组件 展示组件 容器组件 关注事物的展示 关注事物如何工作 可能包含展示和容器组件,并且一般会有DOM标签和css样式 可能包含展示和容器组件,并且不会有D ...

  9. 第八节:web爬虫之urllib(四)

    第三个 模块parse : 是一个工具模块,提供了许多 URL 处理方法,比如拆分.解析.合并等等的方法.

  10. Dubbo 是一个分布式服务框架

    Dubbo 是一个分布式服务框架-----http://www.cnblogs.com/chanshuyi/p/5144288.html