本文部分内容节选自华为云帮助中心的分布式消息服务(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. 使用morphia实现对mongodb的聚合查询

    morphia是谷歌的一个针对mongodb的数据化持久框架: 关于mongodb的介绍不在这里展示,直接进入主题:采用morphia实现对mongodb的聚合查询 这里获取所有学生的分数总和 spr ...

  2. 好用的sublime插件以及快捷键

    管理插件:使用Ctrl+`(Esc键下方)快捷键或者通过View->Show Console菜单打开命令行 import urllib.request,os,hashlib; h = '2915 ...

  3. form表单清空、重置

    form_live为formID <input type="button" value="重置" onclick="$('#form_live' ...

  4. 扩增子分析解读2提取barcode 质控及样品拆分 切除扩增引物

    本节课程,需要完成扩增子分析解读1质控 实验设计 双端序列合并 先看一下扩增子分析的整体流程,从下向上逐层分析 分析前准备 # 进入工作目录 cd example_PE250 上一节回顾:我们拿到了双 ...

  5. pyhon模块

    模块基础 什么是模块 模块式一系列功能的集合体,而函数是某一个功能的集合体,因此模块可以看成是一堆函数的集合体.一个py文件内部可以放一堆函数,因此一个py文件就可以看成是一个模块.如果这个py文件的 ...

  6. 构造From窗体获取数据库数据,去除数据库中无用信息,并赋值给字段,最后画出图

    private void cbNum_SelectedIndexChanged(object sender, EventArgs e) { FieldListLug.Clear();//继续清除字段 ...

  7. gym101343 2017 JUST Programming Contest 2.0

    A.On The Way to Lucky Plaza  (数论)题意:m个店 每个店可以买一个小球的概率为p       求恰好在第m个店买到k个小球的概率 题解:求在前m-1个店买k-1个球再*p ...

  8. 【Hadoop】三、HDFS命令行接口

      通过前面对HDFS基本概念.高可用性.数据读写流程的介绍,我们对HDFS已经有了大致的了解.这里我们还需要明确一点:Hadoop作为一个完整的分布式系统,它有一个抽象的文件系统的概念,而我们介绍的 ...

  9. 计算机网络篇(前端、HTTP)

    全端工程师需知道的计算机网络知识 一.网络篇-http报文详解 1. 分类 请求报文 响应报文 2. 报文结构 (一).请求报文 一个HTTP请求报文由请求行(request line).请求头部(h ...

  10. python之cookbook-day02

    第一章:数据结构和算法 1.2 解压可迭代对象赋值给多个变量 问题: 如果一个可迭代对象的元素个数超过变量个数时,会抛出一个 ValueError .那么 怎样才能从这个可迭代对象中解压出 N 个元素 ...