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

相关推荐
不学会Ⅳ15 分钟前
Kafka-Produce客户端源码流程
分布式·kafka·php
听忆.2 小时前
RabbitMQ消息可靠性等机制详解(精细版三)
java·开发语言·spring boot·后端·spring·java-ee·rabbitmq
吃货智3 小时前
Kafka搭建(集群版)
分布式·kafka
赫萝的红苹果4 小时前
基于Redisson实现分布式锁
java·spring boot·分布式
Java追光着5 小时前
谷粒商城笔记-03-分布式基础概念
笔记·分布式·谷粒商城
空青7267 小时前
AOP与IOC详解
java·服务器·分布式·后端·中间件·面试·架构
我非夏日8 小时前
基于Hadoop平台的电信客服数据的处理与分析③项目开发:搭建基于Hadoop的全分布式集群---任务6:安装并配置Hadoop
大数据·hadoop·分布式
ZJ_.8 小时前
Node.js 使用 gRPC:从定义到实现
java·开发语言·javascript·分布式·rpc·架构·node.js
我非夏日9 小时前
基于Hadoop平台的电信客服数据的处理与分析③项目开发:搭建基于Hadoop的全分布式集群---任务5:ZooKeeper集群安装
大数据·hadoop·分布式·zookeeper·大数据技术开发·大数据项目·电信客服数据的处理与分析
喻师傅10 小时前
Hadoop权威指南-读书笔记-03-Hadoop分布式文件系统
大数据·hadoop·分布式