欢迎来到“雪碧聊技术”CSDN博客!
在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将不断探索Java的深邃世界,分享最新的技术动态、实战经验以及项目心得。
让我们一同在Java的广阔天地中遨游,携手提升技术能力,共创美好未来!感谢您的关注与支持,期待在“雪碧聊技术”与您共同成长!
目录
举例:我们把docker容器关闭(即关闭rabbitMQ进程),然后使用Java客户端发送消息到MQ,看看是否会重试连接MQ
3、SpringAMQP实现生产者确认(简单看看就行,理解即可)
①在生产者(publisher)对应的微服务的配置文件中,添加如下配置
②每个RabbitTemplate只能配置一个ReturnCallback,因此需要在项目启动过程中进行配置(即:编写成配置类)
③发送消息时,指定消息ID、消息的ConfirmCallback
一、消息可靠性问题
1、什么是消息可靠性问题?
一个消息被发送出去,至少会被消费一次,即:消息不会丢失。
说白了,消息可靠就是消息不会丢失。
2、造成消息不可靠的三个因素
①生产者:发送消息时,造成消息丢失
②MQ(交换机+队列):消息队列自己把消息弄丢了
③消费者:消费者监听消息时,把消息弄丢了
3、如何解决消息可靠性问题?
有如下四个方案:
①生产者的可靠性
②MQ的可靠性
③消费者的可靠性
④延迟消息(兜底方案,以上方案都失败时,可采用此方案)
二、生产者可靠性
1、生产者重连(确保成功连接到rabbitMQ服务)
有时候由于网络波动,可能会出现客户端连接MQ失败的情况。通过配置我们可以开启连接失败后的重连机制:
注意:以上是我们的Java客户端连接MQ时失败后的重试,而不是发送者发送消息失败后的重试。