当前位置: 首页 > wzjs >正文

番禺建设网站策划咨询公司

番禺建设网站策划,咨询公司,做公司网站写什么信息,nodejs 做网站js交件1. 引言 在 Spring Boot 项目中,RabbitMQ 是一种常见的消息中间件,用于实现异步通信。为了确保消息可靠传输,我们需要配置 RabbitTemplate,并实现 ConfirmCallback 和 ReturnsCallback 两种回调机制。 本文将介绍如何在 Spring …

1. 引言

在 Spring Boot 项目中,RabbitMQ 是一种常见的消息中间件,用于实现异步通信。为了确保消息可靠传输,我们需要配置 RabbitTemplate,并实现 ConfirmCallbackReturnsCallback 两种回调机制。

本文将介绍如何在 Spring Boot 中

2. RabbitMQ 配置类

首先,我们创建 RabbitMqConfig 配置类:

集成 RabbitMQ,并详细讲解 RabbitTemplate 的使用。

@EnableRabbit
@Configuration
public class RabbitMqConfig {private static Logger log = LoggerFactory.getLogger(RabbitMqConfig.class);@BeanRabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {RabbitTemplate rabbitTemplate = new RabbitTemplate();rabbitTemplate.setConnectionFactory(connectionFactory);// 必须设置为 true,否则消息投递失败不会触发 ReturnCallbackrabbitTemplate.setMandatory(true);// 消息发送确认回调rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {String messageId = correlationData != null ? correlationData.getId() : "null";if (ack) {log.info("消息成功发送到交换机,消息ID:{}", messageId);} else {log.error("消息发送到交换机失败,消息ID:{},原因:{}", messageId, cause);}});// 消息路由失败回调rabbitTemplate.setReturnsCallback(returned -> {String correlationId = returned.getMessage().getMessageProperties().getHeader("spring_returned_message_correlation");log.error("消息发送失败,ID:{},应答码:{},原因:{},交换机:{},路由键:{}",correlationId, returned.getReplyCode(), returned.getReplyText(),returned.getExchange(), returned.getRoutingKey());});return rabbitTemplate;}
}

3. 消息投递的四种情况

在使用 RabbitMQ 时,消息投递可能遇到以下四种情况:

  1. 消息推送到 RabbitMQ 服务器,但找不到交换机

    • ConfirmCallback 被触发,ack = false

  2. 消息推送到服务器,找到交换机,但找不到队列

    • ConfirmCallback 被触发,ack = true

    • ReturnsCallback 也会被触发

  3. 消息推送到服务器,既找不到交换机,也找不到队列

    • ConfirmCallback 被触发,ack = false

  4. 消息推送成功

    • ConfirmCallback 被触发,ack = true


4. 发送消息示例

@Autowired
private RabbitTemplate rabbitTemplate;public void sendMessage(String exchange, String routingKey, String message) {CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());rabbitTemplate.convertAndSend(exchange, routingKey, message, correlationData);log.info("发送消息:{},交换机:{},路由键:{},消息ID:{}", message, exchange, routingKey, correlationData.getId());
}

5. 总结

通过 RabbitTemplate 配置 ConfirmCallbackReturnsCallback,我们可以确保消息的可靠投递,并在失败时进行日志记录或重试处理。本文的示例适用于 Spring Boot 2.x 及以上版本,实际使用时可结合具体业务需求进行优化。

希望这篇文章能帮助你更好地理解 RabbitMQ 在 Spring Boot 中的使用!

http://www.dtcms.com/wzjs/182848.html

相关文章:

  • dw做网站时怎么改为绝对路径seo基础培训机构
  • 免费移动网站建设南宁优化推广服务
  • 免费网站新域名发布信息的免费平台有哪些
  • 成都网站搭建公司怎么免费建立网站
  • 亿网行海淀区seo引擎优化
  • 网站建设灬金手指下拉十四新闻发稿平台
  • 动漫设计学校哪里好优化大师怎么删除学生
  • 专门做游轮的网站手机助手
  • 怎么用服务器lp做网站5月疫情第二波爆发
  • 做兼职网上哪个网站好链接制作软件
  • 网站建设价格真甲先生怎样制作一个自己的网站
  • 自己做的网站为何手机不能浏览搜一下百度
  • 建筑资料网站大全驻马店百度seo
  • 多媒体展厅公司seo专家是什么意思
  • 库尔勒网站建设公司seo做得比较好的公司
  • 网站设优化大师兑换码
  • 做网站的公司msgg免费制作网站的软件
  • wordpress的图片代码是什么seo是什么意思呢
  • 网站建设玖金手指排名15怎么优化关键词
  • 兰州做网站公司内容营销是什么意思
  • java公司网站怎么做网络赚钱推广
  • 免费网站建设代理百度一下 你知道首页
  • 阿里巴巴对外做网站吗视频营销模式有哪些
  • 哪些做任务的网站靠谱广点通广告投放平台登录
  • 宝洁公司网站建设案例seo品牌优化百度资源网站推广关键词排名
  • 印刷做网站网上接单互联网全网营销
  • 免费做网站app下载亿驱动力竞价托管
  • 嘉兴seo推广优化seo成功的案例和分析
  • 服务专业的网站建设服务公众号推广费用一般多少
  • 合肥最新通告今天搜索引擎优化的重要性