RabbitMQ的延时队列和死信队列

前言:
1、在 RabbitMQ 中,没有严格意义上的死信队列,所谓死信队列和正常队列没有太大区别,都是需要创建自己的Exchange、Routingkey、Queue,只不过死信队列的 Exchange 和 RoutingKey 要作为参数绑定到正常队列(也可能是延时队列)上,根据参数策略决定是否进入死信队列

2、死信队列和延时队列可以相互调换使用,例如先发送消息给延时队列(其中配置的有延时策略),当消息达到延长的时间后,再丢入正常的业务队列中。此时就可以把正常的队列理解为死信队列,而前者可理解为延时队列

3、无法或暂时无法被消费、或消费出异常的消息,即被丢入死信队列

一、队列中的消息在以下情况,会进入死信队列

1、消息 TTL(time to live),(x-message-ttl)过期

2、队列达到最大长度(x-max-length),满了无法再存放消息

3、消息被拒绝(basic.reject / basic.nack),并且requeue = false

4、消费者开启了自动确认,然后消费消息时出现异常,超过了配置的重试次数

二、延时队列示例

1、定义延时交换机

    //延时交换机
    @Bean
    public DirectExchange delayDirectExchange0() {
        return new DirectExchange(MqConstants.DELAY_DIRECT_EXCHANGE_0);
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值