RabbitMQ之死信队列

RabbitMQ之死信队列

rabbitMq没有提供延时队列的方法,我们可以利用TTL和DLX来实现延时队列功能。

死信队列

DLX(Dead-Letter-Exchange),利用DLX,当消息在一个队列中变成死信 (dead message) 之后,能被重新发布到另一个交换机(Exchange),这个交换机就是DLX。

消息变成死信的几种情况
  • 消息被拒绝(basic.reject/ basic.nack)并且不再重新投递 requeue=false
  • 消息TTL过期
  • 队列达到最大长度(队列满了,无法再添加数据到mq中)
方法:

DLX能在任何的队列上被指定,设置某个队列(延迟死信队列)的属性,当这个队列中有死信时,RabbitMQ就会自动的将这个消息重新发布到设置的Exchange上去,进而被路由到另一个队列(实际消费的队列),可以监听实际消费队列中消息做相应的处理。

延迟死信队列属性设置:

x-dead-letter-exchange:设置变成死信队列后发送的交换机。

x-dead-letter-routing-key:死信路由键,死信重新按照指定的routing-key发送

x-message-ttl:设置当前队列中所有消息的过期时间,针对单个消息来说,在发布消息时,可以使用Expiration参数来设置单个消息的过期时间(ms)

x-max-length:设置队列的最大长度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值