RabbitMQ的工作模型?

简介: RabbitMQ 核心模型包括交换机、队列和绑定,支持五种消息模式:简单队列、工作队列、发布/订阅、路由和主题模式,适用于不同场景的消息通信与分发。

RabbitMQ 基于交换机(Exchange)、队列(Queue)、和绑定的模式设计,核心的工作模型的话,有简单模式,就是说一个生产者直接发送消息到队列、一个消费者从队列接受消息,适用于一对一的简单通信

然后工作队列模式 多个消费者共享一个队列,消息被轮流分配给不同消费者(默认轮询),用于任务分发和负载均衡,然后就是发布/订阅模式(PUblish/Subscribe)生产者通过交换机(Fanout类型)将消息广播到所有绑定的队列,每个队列对应一个消费者,实现消息多副本分发(如日志多终端同步)。

路由模式:交换机(Direct 类型)根据消息的 routing key 与队列的绑定键精确匹配,将消息发送到指定队列,支持按规则定向传递。

主题模式:交换机(Topic 类型)通过通配符(* 匹配单个单词,# 匹配多个单词)模糊匹配 routing key,实现更灵活的路由规则(如按用户角色、地区过滤消息)。

模式有常见的五种:

  • 简单队列模式:一个生产者,一个消费者,一个消息被一个消费者接收;
  • 工作队列模式:一个生产者,生产一个消息到一个队列中,多个消费者同时监听这个队列;消息被竞争消费。(默认平均,可配置为 能者多得)
  • 交换机模式
  • Fanout 广播模式:每个绑定到该类交换机的队列都能接收到消息,实现广播的效果
  • Direct 定向模式:每个绑定到交换机的队列,还有一个路由key;发送的key与绑定同类key的队列才能接收到消息
  • Topic 主题模式:每个绑定到交换机的队列,还有一个路由key;发送的key与绑定同类key的队列才能接收到消息;这个key可以使用通配符;*表示一个字符,#表示多个
相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
存储 算法 Oracle
极致八股文之JVM垃圾回收器G1&ZGC详解
本文作者分享了一些垃圾回收器的执行过程,希望给大家参考。
|
消息中间件 存储 运维
Rabbitmq消息大量堆积怎么办?
该文讨论了一个系统架构问题,主要涉及RabbitMQ在处理订单消息时遇到的性能瓶颈。首先,系统使用RabbitMQ是为了解耦和提高性能,前端创建订单后通过RabbitMQ发送消息给订单履约系统消费并执行后续操作。当订单流量激增时,消息堆积导致服务器压力增加。 排查解决方案: 1. 增加消费者以提高消费速度,但发现即使增加消费者,消息堆积问题仍未解决。 2. 分析消费者逻辑,发现调用库存系统接口可能导致处理速度慢。库存系统压力大,接口响应慢,加剧问题。 3. 实施清空堆积消息的策略,新建消费者快速消费消息并存储在表中,减轻服务器压力。待库存服务恢复后,再将消息推回RabbitMQ处理。
886 1
|
消息中间件 存储 Java
最经典的消息中间件:RabbitMQ
最经典的消息中间件:RabbitMQ
879 1
|
1月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
|
消息中间件 存储 缓存
消息中间件系列教程(06) -RabbitMQ -五种队列形式
消息中间件系列教程(06) -RabbitMQ -五种队列形式
1619 1
|
6月前
|
消息中间件 存储 设计模式
RocketMQ原理—5.高可用+高并发+高性能架构
本文主要从高可用架构、高并发架构、高性能架构三个方面来介绍RocketMQ的原理。
2059 21
RocketMQ原理—5.高可用+高并发+高性能架构
|
8月前
|
消息中间件 存储 监控
RabbitMQ如何保证消息可靠性?
RabbitMQ通过多种机制确保消息的可靠性,包括消息持久化、确认机制、消息重试与死信队列、消息去重、高可用性配置以及监控与告警机制。这些措施共同构成了RabbitMQ可靠消息传递的基础,帮助开发者在构建分布式系统时有效避免消息丢失和重复处理问题。理解并正确实施这些技术,将显著提高应用系统的稳定性和用户体验。
537 14
|
7月前
|
消息中间件
RabbitMQ 的工作模型有哪些
RabbitMQ 的工作模型有哪些
|
10月前
|
消息中间件 存储 运维
2024最全RabbitMQ集群方案汇总
本文梳理了RabbitMQ集群的几种方案,主要包括普通集群、镜像集群(高可用)、Quorum队列(仲裁队列)、Streams集群模式(高可用+负载均衡)和插件方式。重点介绍了每种方案的特点、优缺点及适用场景。搭建步骤包括安装Erlang和RabbitMQ、配置集群节点、修改hosts文件、配置Erlang Cookie、启动独立节点并创建集群,以及配置镜像队列以提高可用性和容错性。推荐使用Quorum队列与Streams模式,其中Quorum队列适合高可用集群,Streams模式则同时支持高可用和负载均衡。此外,还有Shovel和Federation插件可用于特定场景下的集群搭建。
2092 2
|
10月前
|
消息中间件 Java Kafka
MQ四兄弟:如何保证消息顺序性
在分布式系统中,消息队列(MQ)是确保组件间高效通信的关键。RabbitMQ、RocketMQ、Kafka和Pulsar通过不同机制保证消息顺序性:RabbitMQ依赖单一队列和消费者模式;RocketMQ使用MessageQueueSelector;Kafka基于Partition和Key;Pulsar通过分区主题和键路由。这些系统的核心思想是将相同特征的消息发送到同一队列或分区,并按先进先出原则消费,从而确保消息顺序性。
622 0