`

RabbitMQ消息中间件技术精讲17 高级篇十 死信队列

 
阅读更多

死信队列介绍

本文是《RabbitMQ精讲系列》中第十七:RabbitMQ消息中间件技术精讲17 高级篇十 死信队列

死信队列:DLX(dead-letter-exchange)

    当一个消息没有了消费者之后,这个队列就成了死信队列。

在RabbitMQ中,死信队列是相对于exchange的。RabbitMQ的死信队列:

利用DLX,当消息在一个队列中变为死信(dead message)之后,它能被重新publish到另一个exchange,这个exchange就是DLX死信队列了。

在RabbitMQ中,消息如何变成死信的?有以下几种情况:

1:消息被拒绝

    消息被拒绝又分为:basic.reject和basic.nack两种

当是这两种情况下且设置了requeeu=false。也就是设置重回队列为false的情况

2:消息TTL过期

    在上一篇文章中,我们讲的TTL消息的时效性。当消息超过了设置的超时时间情况

3:队列达到最大长度

    同样,在上一篇中,我们讲到了在发送消息的时候,设置消息的最大上的。当发送消息的数据长度超过了设置的值之后,这种情况也成了死信队列。

在来看看rabbitmq死信队列:

DLX也是一个正常的exchange,和一般的exchange没有区别,它能在任何的队列上被指定,实际上也就是设置某个队列的属性而已;

当这个队列中有死信时候,rabbitmq就会自动的将这个消息重新发布到设置的exchange上去,进而被路由到另一个队列。

可以监听这个队列中消息做相应的处理,这个特性可以弥补rabbitmq3.0以前支持immediate参数的功能。

死信队列设置:

1 :设置死信队列的exchange和queue,然后进行绑定(这是废话,任何一个队列都是这样的)

Exchange:dlx.exchange

Queue:dlx.queue

Routingkey:#

2 :然后我们进行正常的声明交换机、队列、绑定,只不过我们需要在队列加上一个参数即可。这个参数就是:arguments.put(“x-dead-letter-exchange”,”dlx.exchange”).

说明:arguments.put(“x-dad-letter-exchange”,”这里是自己定义的接收死信队列的exchange”)

这样消息在过期、requeue、队列在达到最大长度时,消息就可以直接路由到死信队列了!

代码这里就不截图了,已发布在git上。

本章节总结:

 

 

分享到:
评论

相关推荐

    RabbitMQ消息中间件技术精讲

    ### RabbitMQ消息中间件技术精讲 #### 一、RabbitMQ简介 RabbitMQ是一款在IT领域广泛应用的消息中间件,它基于AMQP(Advanced Message Queuing Protocol)协议开发而成,能够实现高效、可靠的数据传输服务。...

    RabbitMQ消息中间件技术精讲.txt

    ### RabbitMQ消息中间件技术精讲 #### 一、RabbitMQ简介 RabbitMQ是一款在IT领域广泛应用的消息中间件,它基于AMQP(Advanced Message Queuing Protocol)协议开发而成,能够实现高效、可靠的消息传输服务。...

    RabbitMQ消息中间件技术精讲(包含源码等).xlsx

    RabbitMQ消息中间件技术精讲(包含源码等) RabbitMQ消息中间件技术精讲(包含源码等) RabbitMQ消息中间件技术精讲(包含源码等)

    RabbitMQ消息中间件技术精讲.zip

    RabbitMQ消息中间件技术精讲

    RabbitMQ消息中间件视频教程

    ### RabbitMQ消息中间件知识点详解 #### 一、RabbitMQ简介 RabbitMQ是一款开源的消息中间件,基于AMQP(Advanced Message Queuing Protocol)协议实现。它支持多种消息发布订阅模式,包括简单模式(Simple)、工作...

    rabbitMQ 死信队列 完整例子

    本篇将深入探讨RabbitMQ的死信队列,并通过一个完整的实例来展示如何设置和使用。 首先,理解死信队列的基本概念。死信队列是RabbitMQ中一种特殊机制,当消息无法正常路由到队列或者达到预设的TTL(Time To Live)...

    RabbitMQ消息中间件技术.zip

    RabbitMQ消息中间件技术

    39 RabbitMQ消息中间件

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件

    RabbitMQ死信队列应用1

    RabbitMQ死信队列(Dead Letter Exchange, DLX)是一种高级特性,用于处理那些无法正常处理或过期的消息。当消息在业务队列中处理失败,如因异常导致重试次数达到上限,就会变为死信。DLX允许将这些死信重新发布到另...

    RabbitMQ消息中间件面试专题

    在Java开发领域,消息中间件是系统间通信的重要工具,RabbitMQ作为一款广泛使用的开源消息队列,它在分布式系统、微服务架构中扮演着至关重要的角色。本面试专题将深入探讨RabbitMQ的相关知识,帮助你更好地理解和...

    RabbitMQ消息中间件学习,了解AMQP(高级消息队列协议).zip

    RabbitMQ消息中间件学习,了解AMQP(高级消息队列协议)

    【ASP.NET编程知识】运用.NetCore实例讲解RabbitMQ死信队列,延时队列.docx

    ASP.NET 编程知识 - RabbitMQ 死信队列和...RabbitMQ的死信队列和延时队列是两个非常有用的功能,它们可以帮助我们更好地处理消息队列中的消息。在ASP.NET编程中,我们可以使用这些功能来实现更加复杂的业务逻辑处理。

    RabbitMQ 消息中间件示例: 抢购

    **RabbitMQ 消息中间件在抢购场景中的应用** 在现代互联网应用中,抢购活动已经成为一种常见的促销手段,吸引大量用户在同一时间参与。为了处理这种高并发的业务场景,开发人员需要采取有效的方式来分发和处理大量...

    使用rabbitmq消息中间件.zip

    使用rabbitmq消息中间件

    RabbitMQ消息中间件面试专题.pdf

    RabbitMQ是当前非常流行的一种消息中间件,它使用了先进的消息队列协议(AMQP)实现,广泛用于构建可靠的消息传递系统。本篇文档将以面试专题的形式,针对RabbitMQ中的关键知识点进行解析。 首先,我们来探究...

    20.消息中间件之RabbitMQ入门讲解

    RabbitMQ是一款开源的消息中间件,它基于AMQP(Advanced Message Queuing Protocol)协议,用于在分布式系统中高效地传递消息。在这个“20.消息中间件之RabbitMQ入门讲解”的主题中,我们将深入理解RabbitMQ的核心...

Global site tag (gtag.js) - Google Analytics