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

网站建设方案选公司关键词在线挖掘网站

网站建设方案选公司,关键词在线挖掘网站,河南省建设厅证件查询,wordpress 收费阅读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/41746.html

相关文章:

  • ps怎么做网站首页和超链接宁波网站推广找哪家
  • 包头网站建设设计网络优化大师下载
  • wordpress新版编辑seo优化的主要任务包括
  • 建设委员会网站沈阳百度seo排名优化软件
  • flask做的网站项目苏州seo建站
  • 安徽网站建设哪家好网站推广模式
  • 网站动态交互武汉企业网站推广
  • 网站背景尺寸核心关键词如何优化
  • 章丘做网站优化深圳网络营销软件
  • 烟台建设协会网站湖南手机版建站系统开发
  • 网站做专题页面商品推广软文范例100字
  • 网站sem优化怎么做宁夏百度公司
  • 高性能网站建设进阶指南:web开发者性能优化最佳实践 pdf高级搜索技巧
  • 如果建设一个网站宁波建站模板系统
  • 商城网站开发公司线上推广宣传方式有哪些
  • 怎么做网站里的悬浮窗口沧州seo公司
  • 泉州网站建设有哪些漂亮的网页设计
  • 商务网站需求说明书seo怎么做关键词排名
  • 手机网站域名哪里注册今日头条重大消息
  • 微信分销网站建设哪家好seo排名优化培训怎样
  • 成都门户网站建设重庆seo网络营销
  • 腾讯企业邮箱邮箱seo基础理论
  • 淘客网站怎么做返利品牌推广的步骤和技巧
  • 网站域名想更换要怎么做石家庄百度seo
  • 专业建站深圳网站开发制作
  • 深圳建网站兴田德润团队企业网站设计公司
  • 做校园网站代码优化大师官方下载
  • 自己做网站卖营销方案
  • 昆明网站建设是什么意思sem代运营推广公司
  • 莱芜网站制作公司最好用的免费建站