RabbitMQ 死信/死信队列


一、RabbitMQ 死信/死信队列

1、DLX

  • Dead Letter Exchange 的缩写

  • DLX(Dead Letter Exchanges)死信交换,死信队列本身也是一个普通的消息队列,在创建队列的时候,通过设置一些关键参数,可以将一个普通的消息队列设置为死信队列,与其它消息队列不同的是,其入栈的消息根据入栈时指定的过期时间/被拒绝/超出队列长度被移除,依次被转发到指定的消息队列中进行二次处理。这样说法比较拗口,其原理就是死信队列内位于顶部的消息过期时,该消息将被马上发送到另外一个订阅者(消息队列)中


  • 2、什么是死信

  • 消息被拒绝(basic.reject或basic.nack)并且requeue=false.

  • 消息TTL过期

  • 队列达到最大长度(队列满了,无法再添加数据到mq中)


3、什么是死信交换机

  • 在定义业务队列的时候,要考虑指定一个死信交换机,死信交换机可以和任何一个普通的队列进行绑定,然后在业务队列出现死信的时候就会将数据发送到死信队列。


4、什么是死信队列

  • 死信队列实际上就是一个普通的队列,只是这个队列跟死信交换机进行了绑定,用来存放死信而已



如何使用死信交换机

定义业务(普通)队列的时候指定参数

  • x-dead-letter-exchange: 用来设置死信后发送的交换机

  • x-dead-letter-routing-key:用来设置死信的routingKey

死信交换机图解

  • 640?wx_fmt=png

640?wx_fmt=png




生产者:

(1)生产者连接到RabbitMQ Broker,建立一个连接( Connection)开启一个信道(Channel)

(2)生产者声明一个交换器,并设置相关属性,比如交换机类型、是否持久化等

(3)生产者声明一个队列井设置相关属性,比如是否排他、是否持久化、是否自动删除等

(4)生产者通过路由键将交换器和队列绑定起来

(5)生产者发送消息至RabbitMQ Broker,其中包含路由键、交换器等信息。

(6)相应的交换器根据接收到的路由键查找相匹配的队列。

(7)如果找到,则将从生产者发送过来的消息存入相应的队列中。

(8)如果没有找到,则根据生产者配置的属性选择丢弃还是回退给生产者

(9)关闭信道。

(10)关闭连接。


消费者:

(1)消费者连接到RabbitMQ Broker ,建立一个连接(Connection),开启一个信道(Channel) 。

(2)消费者向RabbitMQ Broker 请求消费相应队列中的消息,可能会设置相应的回调函数,

(3)等待RabbitMQ Broker 回应并投递相应队列中的消息,消费者接收消息。

(4)消费者确认(ack) 接收到的消息。

(5)RabbitMQ 从队列中删除相应己经被确认的消息。

(6)关闭信道。

(7)关闭连接。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7 rabbitmq安装/配置

一、RabbitMQ简单介绍RabbitMQ就是当前最主流的消息中间件之一。RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支…

Hyper-V + CentOS7 安装视频教程

一、前言本文使用图文视频的方式展示安装Centos7,【喜欢看视频学习的童靴请拖至文尾观看视频】二、虚拟机配置指定虚拟机名称&安装位置选择虚拟机代数 第一代虚拟机(例如Server 2008等平台技术,支持Vista、Win7) 第二代虚拟机…

程序员修神之路--用NOSql给高并发系统加速

领取福利记得长按,领取技术书籍哦随着互联网大潮的到来,越来越多网站,应用系统需要海量数据的支撑,高并发、低延迟、高可用、高扩展等要求在传统的关系型数据库中已经得不到满足,或者说关系型数据库应对这些需求已经显…

限时团购,6.5折:《C# 7.0 核心技术指南》

大家好,经过近两年的翻译,《C# 7.0 核心技术指南》终于和大家见面了。全书由 ThoughtWorks 高级咨询师,资深 .NET 专家刘夏翻译。作为一本第七次再版的图书,此次翻译对书中的字句进行了重新整理。期间和图书的原作者 Joe Albahari…

Azure 命令行工具大混战,都是什么,该选哪个?

点击上方蓝字关注“汪宇杰博客”导语最近在学习 Azure 的命令行玩法,发现官方有不止一种命令行工具,容易对新手产生混淆,本文将介绍各种工具都是干啥的,以及如何选择。目前,微软官方有3个Azure命令行工具,分…

揭秘鸿蒙生态背后的DevOps实践

(图片来源于网络)8月9日,华为发布了鸿蒙操作系统,在发布会上我们看到了鸿蒙系统的研发历程:2017年,鸿蒙内核1.0完成技术验证;2018年,鸿蒙内核2.0用于终端TEE;2019年&…

AT3557 Four Coloring 切比雪夫距离 + 四色构造

传送门 由于曼哈顿距离在图上显示的是一个棱形,并不是很好看,所以我们将其旋转454545,转换成切比雪夫距离,这样就变成了一个正方形,正方形内部的点距离都不超过ddd,此时可以将正方形内部的点看成一个整体&a…

SonarQube系列一、Linux安装与部署

来源:https://www.cnblogs.com/7tiny/p/11269774.html【前言】随着项目团队规模日益壮大,项目代码量也越来越多。且不说团队成员编码水平层次不齐,即便是老手,也难免因为代码量的增加和任务的繁重而忽略代码的质量,最终…

P2906 [USACO08OPEN]Cow Neighborhoods G 切比雪夫距离 + 并查集 + set

传送门 考虑将曼哈顿距离转换成切比雪夫距离,这样问题就变成了max(∣x1−x2∣,∣y1−y2∣)≤dmax(|x_1-x_2|,|y_1-y_2|)\le dmax(∣x1​−x2​∣,∣y1​−y2​∣)≤d,这个式子就很好看了,我们首先按照(x,y)(x,y)(x,y)排序,让后我…

2018-2019 ACM-ICPC, Asia Shenyang Regional Contest E. The Kouga Ninja Scrolls 切比雪夫距离 +线段树

传送门 将曼哈顿距离转换成切比雪夫距离,现在就是求max(∣x1−x2∣,∣y1−y2∣)max(|x_1-x_2|,|y_1-y_2|)max(∣x1​−x2​∣,∣y1​−y2​∣),显然我们可以将x,yx,yx,y分开考虑,下面以xxx为例。 考虑一段区间内不同门派的最大值和最小值&am…

ASP.NET Core 框架本质学习

本文作为学习过程中的一个记录。学习文章地址:https://www.cnblogs.com/artech/p/inside-asp-net-core-framework.html一. ASP.NET Core 框架上的 Hello World程序public class Program{public static void Main()> new WebHostBuilder() .UseKestrel() …

基于C#实现的轻量级多线程队列

工作中我们经常会遇到一些一些功能需要实现造作日志,数据修改日志,对于这种业务需求如果我们以同步的方式实现,难免会影响到系统的性能。如下我列出集中解决方案。使用Thread异步处理。使用线程池或Task异步处理。以上两种方案确实能解决我们…

【活动】厦门.NET俱乐部 省上云开发者专场

十年磨一剑,厦门.NET俱乐部诚挚邀请您相约软件园二期创驿站,参加云重启|厦门.NET俱乐部省上云开发者专场。活动干货满满,更有精美礼品,厦门.NET俱乐部期待与您“厦门论剑”。详情请点击图片或直接阅读原文报名

腾讯物联TencentOS tiny上云初探

2017年中旬曾写过一篇关于物联网平台的文章《微软最完善,百度最“小气” 看微软阿里百度三大物联网云平台对比》。现在已经过去两年了,物联网的格局又发生了不少的变化。不过针对腾讯来说,其物联网平台发轫的时间绝不算晚,基本就是…

ASP.NET Core on K8S深入学习(3-2)DaemonSet与Job

本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。上一篇《3-1 Deployment》中介绍了Deployment,它可以满足我们大部分时候的应用部署(无状态服务类容器),但是针对一些特…

Asp.Net Core WebAPI+PostgreSQL部署在Docker中

PostgreSQL是一个功能强大的开源数据库系统。它支持了大多数的SQL:2008标准的数据类型,包括整型、数值值、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。PostgreSQL对很多高级开发…

博客园升级有感一点建议

实践出真知这几天在园子里面最热闹的事情各位都知道吧?没错,我说的就是博客园升级事件,有不熟悉的朋友吗,没关系,我给你搬运好了,请回顾一下Powered by .NET Core 系列博文:【故障公告】发布 .N…

.Net Core2.1 秒杀项目一步步实现CI/CD(Centos7)系列二:k8s高可用集群搭建总结以及部署API到k8s...

前言:本系列博客又更新了,是博主研究很长时间,亲自动手实践过后的心得,k8s集群是购买了5台阿里云服务器部署的,这个集群差不多搞了一周时间,关于k8s的知识点,我也是刚入门,这方面的知…

使用Asp.net Core3Blazor 的全栈式网站开发体验

最新的微软视频: Full stack web development with ASP.NET Core 3.0 and Blazor - BRK3017 以下是重要步骤截图配注解,注意图多杀猫:此图是.Net Core3的全栈解决方案示意图。话说此图的第一部分Client 是可以灵活替换的,哪怕它是…

k8s集群部分常见问题处理

目录部分常见问题处理Coredns CrashLoopBackOff 导致无法成功添加工作节点的问题添加工作节点时提示token过期kubectl 执行命令报“The connection to the server localhost:8080 was refused”网络组件flannel无法完成初始化部分节点无法启动pod最后部分常见问题处理结合我们上…