RabbitMQ 消息队列的工作模式

RabbitMQ 提供了多种工作模式,按照官网的描述,实际上可以分为七种模式

简单模式
  • 作用: 生产者将消息发送到队列,消费者从队列中获取消息。每条消息只能被一个消费者消费。

  • 适用场景: 适用于消息量较小且不需要复杂路由逻辑的场景。

RabbitMQ 提供了多种工作模式,按照官网的描述,实际上可以分为七种模式

工作队列模式
  • 作用: 通过多个消费者分担任务,达到负载均衡的目的。是一种竞争关系的模式,多个消费者之间是竞争关系,即一条消息如果被某个消费者消费了,那么其他的消费者就获取不到了。

  • 适用场景: 适用于需要并行处理大量独立任务的场景,如图像处理、视频转码等

发布/订阅模式
  • 作用: 消息发布到交换机,所有绑定到该交换机的队列都会收到消息。常用的交换机类型是 fanout。

  • 适用场景: 适用于广播消息的场景,如日志处理、事件通知等

路由模式
  • 作用: 消息发布到交换机,并根据路由键将消息发送到相应的队列。以此去匹配交换机和队列的绑定,常用的交换机类型是 direct.

  • 适用场景: 适用于需要对消息进行分类处理的场景,如日志系统中按严重级别分类的日志处理。

主题模式
  • 作用: 消息发布到交换机,并根据路由键模式( 通配符匹配 )将消息发送到相应的队列。常用的交换机类型是topic。

  • 适用场景: 适用于需要根据复杂的路由规则对消息进行分类处理的场景,如日志系统中按模块和严重级别分类的日志处理。

RPC 模式

作用: 实现远程过程调用,客户端发送请求消息到队列,服务器端处理后返回响应消息。 适用场景: 适用于需要实现远程服务调用的场景,如微服务之间的通信。

发布确认模式
  • 作用: 用于确保消息已经成功地发布并被 broker 接收。它提供了一种轻量级的方法来确认消息的持久性和可靠性,适用于需要高可靠性消息传递的场景。

  • 适用场景: 金融交易、订单处理等确保消息被可靠地传递和处理,防止丢失的场景。

相关推荐
山甫aa10 小时前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web
严肃小白兔1 天前
Cloudflare Durable Objects 支持自动重试:分布式调用如何避免重复执行?
分布式
Pniubi1 天前
基于RabbitMQ实现延迟队列
rabbitmq
方方洛1 天前
ray教程-27-附录F-RayClient与runtime_env与多语言
人工智能·分布式·机器学习
方方洛2 天前
ray教程-25-附录E-端到端实战案例
人工智能·分布式·机器学习
一条泥憨鱼3 天前
【消息队列】ACK确认了什么:消息队列可靠投递的完整链路
java·后端·kafka·消息队列·rabbitmq
迅翼SwiftWing3 天前
编队系列(二)|固定翼如何依靠邻居信息保持队形?一致性控制、通信拓扑与分布式仿真实现,附仿真代码
分布式
ly76893 天前
幂等消费者与重试副作用:Kafka 端点接入时的去重边界
分布式·kafka·linq·apache camel·幂等消费者·重试副作用·去重边界
qq_452396233 天前
第三篇:《从 ZooKeeper 到 KRaft 的迁移实战:前置条件、三阶段流程与回滚策略》
分布式·zookeeper·云原生
真上帝的左手4 天前
30. 技术专题-‌应用框架组件-关系型数据库-MySQL-Mybatis
数据库·分布式·mysql·中间件·mybatis