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

相关推荐
大菠萝爱上小西瓜20 小时前
【大数据实战】Spark 2.2.2 完全分布式集群搭建
大数据·分布式·spark
肠畔码农20 小时前
深度解析 RocketMQ 消费端限流与重平衡(Rebalance):分布式队列分配与流控防雪崩本质
分布式·rocketmq
海兰21 小时前
【 Kafka进阶3】Apache Kafka 分布式事件流平台:架构原理与微服务解耦机制简要分析
分布式·架构·kafka
Rain的Java大神之路1 天前
如何避免订单重复提交
java·redis·后端·面试·架构·rabbitmq·rocketmq
麻瓜记录Jackson2 天前
深入剖析 ZooKeeper 分布式 互斥锁:Curator 之 InterProcessMutex 源码全解(附图解)
java·spring boot·分布式·后端·zookeeper·java-zookeeper
Keystone_Onion2 天前
跨境电商架构演进:基于美国海外仓的中大件分布式仓网路由优化方案
分布式·架构
盛世宏博智慧档案2 天前
分布式机房环境监测硬件,以太网温湿度采集终端如何应用
分布式·传感器·机房·温湿度
NJCloud2 天前
ELK企业级日志分析平台(四)——基于 ELFK + Kafka 的日志采集与传输平台部署实践
linux·运维·分布式·elk·kafka
国科安芯2 天前
星载网络化控制的总线脊梁:四路CANFD在分布式载荷管理中的架构优势
分布式·单片机·嵌入式硬件·架构·系统架构·canfd·低轨卫星星座
Allen_LVyingbo2 天前
分布式GPU智能算法深度研究2026年版(下)
人工智能·分布式·算法·机器学习·知识图谱