引言:
自我们安装好rabbitmq之时,系统默认生产者与消费者发布消费机制为自动模式,也就是说无需我们知道是否成功,即发布方法调取之后,消费者无异常后,整个流程完毕,但由于我们业务当中,由于网络波动或服务异常,消息有可能未成功被处理,这就需要我们确保消息真的到达了队列,或真的被消费成功,此文章将为大家讲解如何确定发布者将消息是否到达了交换机或队列
本次我们采用rabbitTemplate方式发送
rabbitmq发布确认有三种方式:
- 单独发布消息:同步等待确认,简单,但吞吐量非常有限
- 批量发布消息:批量同步等待确认,简单,合理的吞吐量,一旦出现问题但很难推断出是哪条消息出现了问题。
- 异步处理:最佳性能和资源利用,在出现错误的情况下可以很好地控制,但是实现起来稍微复杂一些。
一、yml文件添加如下:
# spring
spring:
#配置rabbitMq 服务器
rabbitmq:
host: 127.0.0.1
port: 5672
username: test
password: test
publisher-confirm-type: correlated // 此处为新加
二、代码实现:
- 单独发布消息
boolean flag = Boolean.TRUE.equals(rabbitTemplate.invoke(operations -> {
rabbitTemplate.