Rabbitmq的死信队列和延时队列

Rabbitmq的死信队列和延时队列一、死信队列死信队列其实和普通的队列没啥大的区别,都需要创建自己的Queue、Exchange,然后通过RoutingKey绑定到Exchange上去,只不过死信队列的RoutingKey和Exchange要作为参数,绑定到正常的队列上去,一种应用场景是正常队列里面的消息被basicNack或者reject时,消息就会被路由到正常队列绑定的死信队列中,还有一种还有常用的场景就是开启了自动签收,然后消费者消费消息时出现异常,超过了重试次数,那么这条消息也会进入死信队列,
摘要由CSDN通过智能技术生成

Rabbitmq的死信队列和延时队列
一、死信队列
死信队列其实和普通的队列没啥大的区别,都需要创建自己的Queue、Exchange,然后通过RoutingKey绑定到Exchange上去,只不过死信队列的RoutingKey和Exchange要作为参数,绑定到正常的队列上去,一种应用场景是正常队列里面的消息被basicNack或者reject时,消息就会被路由到正常队列绑定的死信队列中,还有一种还有常用的场景就是开启了自动签收,然后消费者消费消息时出现异常,超过了重试次数,那么这条消息也会进入死信队列,如果配置了话,当然还有其他的应用场景,这里不一一讨论。

1.1、死信队列和交换器配置
这里有两个队列,正常的业务队列emailQueue和与之绑定的死信队列,这里只演示,手动签收,消费者捕获异常Nack

1.1.2、yml配置
spring:
rabbitmq:
host: 192.168.99.12
port: 5672
username: guest
password: guest
# 发送确认
publisher-confirms: true
# 路由失败回调
publisher-returns: true
template:
# 必须设置成true 消息路由失败通知监听者,false 将消息丢弃
mandatory: true
listener:
simple:
# 每次从RabbitMQ获取的消息数量
prefetch: 1
default-requeue-rejected: false
# 每个队列启动的消费者数量
concurrency: 1
# 每个队列最大的消费者数量
max-concurrency: 1
# 签收模式为手动签收-那么需要在代码中手动ACK
acknowledge-mode: manual
#邮件队列
email:
queue:
name: demo.email

#邮件交换器名称
exchange:
name: demoTopicExchange

#死信队列
dead:
letter:
queue:
name: demo.dead.letter
exchange:
name: demoDeadLetterTopicExchange
1.1.3、死信队列配置
/**

  • rabbitmq 配置

  • @author DUCHONG

  • @since 2020-08-23 14:05
    **/
    @Configuration
    @Slf4j
    public class RabbitmqConfig {

    @Value(" e m a i l . q u e u e . n a m e " ) p r i v a t e S t r i n g e m a i l Q u e u e ; @ V a l u e ( " {email.queue.name}") private String emailQueue; @Value(" email.queue.name")privateStringemailQueue;@Value("{exchange.name}")
    private String topicExchange;
    @Value(" d e a d . l e t t e r . q u e u e . n a m e " ) p r i v a t e S t r i n g d

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值