actual combat 32 —— RabbitMQ

1. 五种模式

RabbitMQ有五种工作模式,分别是简单模式、工作模式、发布订阅模式、路由模式和主题模式

  • 简单模式(Simple Mode):这种模式包含一个生产者和一个消费者。生产者将消息发送到队列,消费者从队列中获取消息。
  • 工作模式(Work Mode):在这种模式下,有一个生产者和多个消费者。生产者将消息发送到队列,多个消费者可以同时监听并消费队列中的消息,但每条消息只会被一个消费者消费。
  • 发布订阅模式(Publish/Subscribe Mode):在这种模式下,一个生产者发送的消息会被多个消费者获取。生产者将消息发送到交换机,交换机将消息发布到所有绑定的队列中,消费者从各自监听的队列中获取消息。
  • 路由模式(Routing Mode):生产者发送消息到交换机时,需要指定路由键。消费者将队列绑定到交换机时,也需要指定路由键。交换机根据消息的路由键和队列绑定的路由键进行匹配,将消息发送到匹配的队列中。
  • 主题模式(Topic Mode):主题模式与路由模式类似,但路由键是多级路径,可以使用通配符进行模糊匹配。交换机根据消息的路由键和队列绑定的路由键的匹配程度,将消息发送到匹配的队列中。

2. 四种交换机

  • 扇形交换机(Fanout Exchange):它是最基本的交换机类型,会将消息分别发送给所有绑定到扇形交换机上的消息队列。路由键在扇形交换机里没有作用,故消息队列绑定扇形交换机时,路由键可为空。
  • 直连交换机(Direct Exchange):直连交换机是一种带路由功能的交换机,它会将消息的Routing Key与队列绑定的Routing Key进行完全匹配,然后将消息路由到相应的队列。
  • 主题交换机(Topic Exchange):主题交换机根据消息的Routing Key和通配符模式进行匹配,将消息路由到一个或多个队列。例如,"#"匹配一个或者多个词,"*"匹配一个词。
  • 头部交换机(Headers Exchange):头部交换机根据消息的头部信息(Header)进行匹配,将消息路由到匹配的队列

3. 工作模式和交换机的关系

关于交换机的不同和工作模式的不同,它们之间的主要区别在于:

交换机:决定了消息的路由方式。不同类型的交换机提供了不同的消息分发机制,例如广播、路由、匹配等。

工作模式:定义了消息的生产和消费方式。不同的工作模式适用于不同的应用场景,例如简单模式适用于一对一的消息传递,而发布订阅模式适用于一对多的消息传递。

总的来说,RabbitMQ的交换机和工作模式共同构成了其强大的消息传递和处理能力,可以根据具体的应用需求进行选择和配置。

3. 扇出交换机会向不同的队列同时发送消息,它是把相同的消息发送到不同的队列,这样不会造成消息被重复消费的bug吗?

许多场景中,这是期望的行为,因为每个队列的消费者可能负责处理消息的某个特定方面或将其发送到不同的系统或服务。

例如,假设您有一个日志系统,您可能希望将每条日志消息都发送到多个队列中,以便进行不同的处理或存储。一个队列可能用于实时分析,另一个队列可能用于归档,还有一个队列可能用于警报系统。在这种情况下,您会期望每个消费者都从其队列中接收到所有日志消息,并相应地处理它们。

然而,如果在您的应用程序中,多个消费者处理相同的消息会导致问题(例如,重复处理或数据不一致),那么您就需要考虑使用其他类型的交换机(如直连交换机或主题交换机)以及路由键来更精细地控制消息的路由。

总之,扇出交换机的广播行为本身并不一定会导致bug,这取决于您的应用程序如何处理这些消息。在设计消息传递系统时,您应该仔细考虑您的需求,并选择最适合您场景的交换机类型和路由策略。

参考:https://blog.csdn.net/qq_45173404/article/details/121687489

相关推荐
程序猿阿伟16 小时前
《分布式追踪Span-业务标识融合:端到端业务可观测手册》
分布式
消失的旧时光-194318 小时前
第十六课实战:分布式锁与限流设计 —— 从原理到可跑 Demo
redis·分布式·缓存
若水不如远方18 小时前
分布式一致性(三):共识的黎明——Quorum 机制与 Basic Paxos
分布式·后端·算法
会算数的⑨19 小时前
Kafka知识点问题驱动式的回顾与复习——(一)
分布式·后端·中间件·kafka
张小凡vip19 小时前
Kafka--使用 Kafka Connect 导入/导出数据
分布式·kafka
回忆是昨天里的海20 小时前
kafka概述
分布式·kafka
知识即是力量ol20 小时前
初识 Kafka(一):分布式流平台的定义、核心优势与架构全景
java·分布式·kafka·消息队列
nbsaas-boot20 小时前
Pipeline + Saga 分布式扩展规范
分布式
creator_Li20 小时前
分布式IM聊天系统的消息可靠性
分布式·im
一条闲鱼_mytube20 小时前
《分布式事务实战完全指南》:从理论到实践
分布式