Spring环境下CorrelationData,msgId的使用方法

简介: Spring环境下CorrelationData,msgId的使用方法

通常情况下,对于投递到RabbitMQ的消息,我们一般都会指定一个唯一的msgId来标识一条消息,跟踪这条消息的状态。

通常情况下,我们的代码都是这样的:


  • 生产者端:


image.png

  • 消费者端:
    image.png

但是这样的代码的结果是:message.getMessageProperties().getCorrelationIdString()拿到的是null, (String) headers.get("spring_listener_return_correlation");拿到的不是我们在生产者set的值,更像是spring框架自动生成的用于标记被rabbitMQ退回的消息。(这个结果可能跟springboot的版本有关系)

现提出另外一种解决方案:自定义header


  • 生产者
    image.png

  • 消费者
    image.png
  • 进行测试


image.png

并且这个ID似乎在同一个批次里面是一样的


image.png


总结:之所以会发现这个问题,是因为在查看日志监控消息流转的过程中发现,使用message.getMessageProperties().getCorrelationIdString()的消费者,根本拿不到生产者设置的id。然后百度。

image.png


image.png

image.png


该成使用header,spring_listener_return_correlation的方式,但是发现取到的值不是我们设置的。所以最后就通过自定义header的方式,传递这个msgId。

所以百度的代码在使用的过程中要注意查看程序的运行状态是否符合预期。

整个代码的结果可能跟Springboot 的版本有关系,我们公司使用的Springboot版本非常低,所以具体情况具体分析~ 这边只是提供一个思路。

相关文章
|
7月前
|
Java 开发者 Spring
Spring Framework 中的 @Autowired 注解:概念与使用方法
【4月更文挑战第20天】在Spring Framework中,@Autowired 注解是实现依赖注入(Dependency Injection, DI)的一种非常强大的工具。通过使用 @Autowired,开发者可以减少代码中的引用绑定,提高模块间的解耦能力
691 6
|
7月前
|
存储 缓存 Java
【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践
【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践
|
3月前
|
Cloud Native Java 对象存储
面向未来的架构设计:Spring Cloud和Netflix OSS在云原生环境下的发展趋势
展望未来,随着5G、边缘计算等新技术的兴起,微服务架构的设计理念将会更加深入人心,Spring Cloud和Netflix OSS也将继续引领技术潮流,为企业带来更为高效、灵活且强大的解决方案。无论是对于初创公司还是大型企业而言,掌握这些前沿技术都将是在激烈市场竞争中脱颖而出的关键所在。
66 0
|
16天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
30 2
|
2月前
|
Cloud Native Java 对象存储
面向未来的架构设计:Spring Cloud和Netflix OSS在云原生环境下的发展趋势
面向未来的架构设计:Spring Cloud和Netflix OSS在云原生环境下的发展趋势
49 1
|
6月前
|
缓存 运维 Java
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
49 0
|
7月前
|
Java Shell 测试技术
环境切换大法:掌握Spring Boot多套配置与@Profile注解的高级技巧
环境切换大法:掌握Spring Boot多套配置与@Profile注解的高级技巧
149 2
环境切换大法:掌握Spring Boot多套配置与@Profile注解的高级技巧
|
7月前
|
消息中间件 人工智能 Java
Spring Boot+RocketMQ 实现多实例分布式环境下的事件驱动
Spring Boot+RocketMQ 实现多实例分布式环境下的事件驱动
169 1
|
7月前
|
存储 安全 Java
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
第2章 Spring Security 的环境设置与基础配置(2024 最新版)(下)
71 0