搭建消息时光机:深入探究RabbitMQ_recent_history_exchange在Spring Boot中的应用【RabbitMQ实战 二】

简介: 搭建消息时光机:深入探究RabbitMQ_recent_history_exchange在Spring Boot中的应用【RabbitMQ实战 二】

欢迎来到我的博客,代码的世界里,每一行都是一个故事


前言

在编程的世界里,时间似乎总是紧迫的。但是,如果你有了一台消息时光机,就能够轻松穿越异步通信的时空,实现更为精准的消息处理。今天,我们将探索RabbitMQ_recent_history_exchange这个神奇的时光机,看看它如何与Spring Boot一同构建异步通信的未来!

第一:开启插件支持

对于RabbitMQ3.6.0或更高版本,此插件已经内置到RabbitMQ中

⭐️:开启方式

# 非docker搭建,或已经进入到容器内的
rabbitmq-plugins enable rabbitmq_recent_history_exchange
# docker-compose搭建,或docker搭建
docker exec myRabbitmq rabbitmq-plugins enable rabbitmq_recent_history_exchange
# 其中myRabbitmq为你的容器名称

👊:配置成功return

第二:springboot整合

这里基础的整合和上面引言中的实战是一样的,就不过多的赘述了,只贴出关键性代码,以及相应的实现

@Bean
public CustomExchange exchange() {
  Map<String, Object> args = new HashMap<>();
  args.put("x-recent-history-length", 100); // 使用插件提供的 x-delayed-type 参数
  return new CustomExchange(MQ_EXCHANGE,"x-recent-history", true, false,args);
}

1️⃣: args.put("x-recent-history-length", 100);指的是此交换将存储通过交换发送的最新 100条消息

2️⃣: CustomExchange(MQ_EXCHANGE,"x-recent-history", true, false,args)指定类型为x-recent-history

3️⃣:防止存储某些消息

如果您不想存储某些消息,只需将"x-recent-history-no-store"带有值的标头添加true到消息中即可。

第三:效果展示

交换机属性展示

下图可以明显的看到交换机的类型,以及存储的最大条数

功能实现展示

要清楚的看到最后的实现效果,需要进行如下几步

1️⃣:上面都配置好,且交换机创建成功

2️⃣:需要实现一个队列去绑定上面的交换机,且发送一些消息

3️⃣:再创建一个新的队列绑定上面的交换机,即可出现以下效果

上面的testQueue是新创建的队列,可以发现,交换机会自动向其推历史的消息

第四:使用场景

rabbitmq_recent_history_exchange 插件的实际使用场景通常涉及到需要在消费者订阅某个交换机时获取历史消息的情况。这在一些特定的应用场景中是非常有用的,以下是一些可能的使用场景和总结:

使用场景:

  1. 新加入的消费者获取历史消息: 当一个新的消费者加入系统时,它可能需要获取之前已经发布到交换机上的消息,以确保不会错过重要的信息。这在一些实时通讯或实时监控系统中比较常见。
  2. 应用重启时的数据同步: 在应用程序重启时,如果需要将某些历史数据同步到内存中,可以使用 rabbitmq_recent_history_exchange 来获取之前的消息,而不是从数据库等持久化存储中重新加载。
  3. 实时数据流: 对于实时数据流应用,新的消费者加入时可能需要获取历史数据,以确保对整个数据流的完整性有一个良好的认知。
  4. 数据快照: 在某些场景中,需要定期或事件触发地获取一段时间内的消息数据快照。rabbitmq_recent_history_exchange 可以用于在特定时刻获取消息的快照。

总结:

  • 优势: 提供了在订阅时获取历史消息的机制,简化了对历史数据的处理,使得新的消费者能够更容易地获取之前的消息。
  • 适用性: 适用于需要在消费者订阅时获取历史消息的场景,特别是那些对实时性要求不是非常严格的应用。
  • 注意事项: 对于对实时性要求非常高的场景,可能需要谨慎使用,因为历史消息的获取可能引入一定的延迟。
  • 配置参数: 需要根据实际需求合理配置交换机和队列的参数,如历史消息的长度和过期时间。

总体而言,rabbitmq_recent_history_exchange 插件为 RabbitMQ 提供了一种在特定场景下简化历史消息获取的机制,提高了系统的灵活性。在使用时,需要根据具体业务需求和性能要求来权衡是否使用以及如何配置。

结语

深深感谢你阅读完整篇文章,希望你从中获得了些许收获。如果觉得有价值,欢迎点赞、收藏,并关注我的更新,期待与你共同分享更多技术与思考。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
14天前
|
人工智能 Java API
Java也能快速搭建AI应用?一文带你玩转Spring AI可落地性
Java语言凭借其成熟的生态与解决方案,特别是通过 Spring AI 框架,正迅速成为 AI 应用开发的新选择。本文将探讨如何利用 Spring AI Alibaba 构建在线聊天 AI 应用,并实现对其性能的全面可观测性。
|
11天前
|
Java Spring
SpringBoot 实战 不同参数调用不同实现
本文介绍了如何在实际工作中根据不同的入参调用不同的实现,采用`map+enum`的方式实现优雅且严谨的解决方案。通过Spring Boot框架中的工厂模式或策略模式,避免了使用冗长的`if...else...`语句。文中详细展示了定义接口、实现类、枚举类以及控制器调用的代码示例,确保用户输入的合法性并简化了代码逻辑。
SpringBoot 实战 不同参数调用不同实现
|
8天前
|
人工智能 Java API
Spring AI与DeepSeek实战一:快速打造智能对话应用
在 AI 技术蓬勃发展的今天,国产大模型DeepSeek凭借其低成本高性能的特点,成为企业智能化转型的热门选择。而Spring AI作为 Java 生态的 AI 集成框架,通过统一API、简化配置等特性,让开发者无需深入底层即可快速调用各类 AI 服务。本文将手把手教你通过spring-ai集成DeepSeek接口实现普通对话与流式对话功能,助力你的Java应用轻松接入 AI 能力!虽然通过Spring AI能够快速完成DeepSeek大模型与。
237 11
|
13天前
|
存储 人工智能 开发框架
Spring AI Alibaba 应用框架挑战赛圆满落幕,恭喜获奖选手
第二届开放原子大赛 Spring AI Alibaba 应用框架挑战赛决赛于 2 月 23 日在北京圆满落幕。
|
9天前
|
人工智能 Java API
Java 也能快速搭建 AI 应用?一文带你玩转 Spring AI 可观测性
Java 也能快速搭建 AI 应用?一文带你玩转 Spring AI 可观测性
|
9天前
|
消息中间件 人工智能 自然语言处理
基于 RocketMQ 事件驱动架构的 AI 应用实践
基于 RocketMQ 事件驱动架构的 AI 应用实践
|
20天前
|
JavaScript 前端开发 Java
Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300%的秘密武器
Jeesite5 是一个基于 Spring Boot 3.3 和 Vue3 的企业级快速开发平台,集成了众多优秀开源项目,如 MyBatis Plus、Bootstrap、JQuery 等。它提供了模块化设计、权限管理、多数据库支持、代码生成器和国际化等功能,极大地提高了企业级项目的开发效率。Jeesite5 广泛应用于企业管理系统、电商平台、客户关系管理和知识管理等领域。通过其强大的功能和灵活性,Jeesite5 成为了企业级开发的首选框架之一。访问 [Gitee 页面](https://gitee.com/thinkgem/jeesite5) 获取更多信息。
Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300%的秘密武器
|
11天前
|
人工智能 Java API
Java 也能快速搭建 AI 应用?一文带你玩转 Spring AI 可观测性
Java 也能快速搭建 AI 应用?一文带你玩转 Spring AI 可观测性
|
11天前
|
存储 人工智能 开发框架
Spring AI Alibaba 应用框架挑战赛圆满落幕,恭喜获奖选手
Spring AI Alibaba 应用框架挑战赛圆满落幕,恭喜获奖选手
|
3月前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
2049 0