RabbitMQ-高级特性3--死信队列3种方式--★延迟队列(重要)

本文详细介绍了RabbitMQ中消息成为死信的三种情况:超长、超时、拒收,并展示了如何设置死信队列和死信交换机。同时,通过实例讲解了如何利用死信的超时策略实现延迟队列,例如在下单30分钟后未支付的情况下取消订单。文中给出了生产者和消费者的代码配置,以及测试方法。
摘要由CSDN通过智能技术生成

在这里插入图片描述
DLX:死信交换机

消息成为死信的三种情况:超长、超时、拒收

  1. 队列消息长度到达限制(应用:一个消费者处理不了的消息,通过设置死信,转移给另一个消费者处理。分担机器压力);
  2. 消费者拒接消费消息,basicNack/basicReject,并且不把消息重新放入原目标队列,requeue=false;
  3. 原队列存在消息过期设置,消息到达超时时间未被消费;

*死信交换机和死信队列和普通的没有区别
*当消息成为死信后,如果该队列绑定了死信交换机,则消息会被死信交换机重新路由到死信队列

生产方模块代码:

1.声明死信队列(queue_dlx)和死信交换机(exchange_dlx)

<rabbit:queue name="queue_dlx" id="queue_dlx"></rabbit:queue>
<rabbit:topic-exchange name="exchange_dlx">
    <rabbit:bindings>
        <rabbit:binding pattern="dlx.#" queue="queue_dlx"></rabbit:binding>
    </rabbit:bindings>
</rabbit:topic-exchange>

2.正常队列绑定死信交换机,并设置相关参数信息

<rabbit:queue name="test_queue_dlx" id="test_queue_dlx">
    <!--3. 正常队列绑定死信交换机-->
    <rabbit:queue-arguments>
        <!--3.1 x-dead-letter-exchange:死信交换机名称-->
        <entry key="x-dead-letter-exchange" value="exchange_dlx" />

        <!--3.2 x-dead-letter-routing-key:发送给死信交换机的routingkey-->
        <entry key="x-dead-letter-routing-key" value="dlx.hehe" />

        <!--4.1 设置队列的过期时间 ttl-->
        <entry key="x-message-ttl" value="10000" value-type="java.lang.Integer" />
        <!--4.2 设置队列的长度限制 max-length -->
        <entry key="x-max-length" value="10" value-type="java.lang.Integer" />
    </rabbit:queue-arguments&g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值