
⏳:Spring Boot中的RabbitMQ死信队列魔法:从异常到延迟,一网打尽【RabbitMQ实战 一】
ℹ️:RabbitMQ插件详解:rabbitmq_recent_history_exchange【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

这里基础的整合和上面引言中的实战是一样的,就不过多的赘述了,只贴出关键性代码,以及相应的实现
@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 插件的实际使用场景通常涉及到需要在消费者订阅某个交换机时获取历史消息的情况。这在一些特定的应用场景中是非常有用的,以下是一些可能的使用场景和总结:
rabbitmq_recent_history_exchange 来获取之前的消息,而不是从数据库等持久化存储中重新加载。rabbitmq_recent_history_exchange 可以用于在特定时刻获取消息的快照。总体而言,rabbitmq_recent_history_exchange 插件为 RabbitMQ 提供了一种在特定场景下简化历史消息获取的机制,提高了系统的灵活性。在使用时,需要根据具体业务需求和性能要求来权衡是否使用以及如何配置。
深深感谢你阅读完整篇文章,希望你从中获得了些许收获。如果觉得有价值,欢迎点赞、收藏,并关注我的更新,期待与你共同分享更多技术与思考。