[028-8].第8节:发布确认高级

我的后端学习大纲

RabbitMQ学习大纲


1、RabbitMQ极端场景:

  • 1.在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ集群不可用的时候,无法投递的消息该如何处理呢
    在这里插入图片描述

2、确认机制方案

  • 1.这里的高级指的是:对生产者发送的消息进行缓存
  • 2.比如说,当MQ中的信道或者队列挂掉了,也没有缓存,那么生产者发送出的消息就没有后续了,生产者自己也无法知道信道或者队列挂掉了
  • 3.所以说,对生产者发送的消息进行缓存,是有必要的
    在这里插入图片描述

3、发布确认高级实现:

3.2. 编码实现MQ的基础流程:

在这里插入图片描述

a.配置文件:

  • 1.在配置文件当中需要添加:spring.rabbitmq.publisher-confirm-type=correlated
    - SIMPLE:
    • NONE:禁用发布确认模式,是默认值
    • CORRELATED:发布消息成功到交换器后会触发回调方法

b.添加配置类:

在这里插入图片描述

c.消息生产者:

在这里插入图片描述
在这里插入图片描述

d.消息消费者

在这里插入图片描述

3.3.编写回调接口:

a.高级体现的情况:

  • 1.交换机和对列因为各种情况导致无法收到消息:
    在这里插入图片描述

b.编码实现:

  • 1.防止发送的消息MQ无接收,消息丢失的问题:
    在这里插入图片描述
  • 2.我继承实现的是一个内部接口,实现了内部接口后写了一个实现类,但是这个实现类并不在RabbitTemplate里面,所以导致RabbitTemplate调用自身的ConfirmCallback接口的时候,根本找不到这个实现类,所以要把我写的实现类注入到RabbitTemplate中。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值