RabbitMQ的六种工作模式
- channel: 信道是生产者,消费者和 RabbitMQ 通信的渠道,是建立在 TCP 连接上的虚拟连接。一个 TCP 连接上可以建立成百上千个信道,通过这种方式,可以减少系统开销,提高性能。
- Broker: 接收客户端连接,实现 AMQP 协议的消息队列和路由功能的进程。
- Virtual Host: 虚拟主机的概念,类似权限控制组,一个 Virtual Host 里可以有多个 Exchange 和 Queue,权限控制的最小粒度是 Virtual Host。
- Exchange: 交换机,接收生产者发送的消息,并根据 Routing Key 将消息路由到服务器中的队列 Queue。
- ExchangeType: 交换机类型决定了路由消息的行为,RabbitMQ 中有三种 Exchange 类型,分别是 direct、fanout、topic。
- Message Queue: 消息队列,用于存储还未被消费者消费的消息,由 Header 和 body 组成。Header 是由生产者添加的各种属性的集合,包括 Message 是否被持久化、优先级是多少、由哪个 Message Queue 接收等,body 是真正需要发送的数据内容。
- BindingKey: 绑定关键字,将一个特定的 Exchange 和一个特定的 Queue 绑定起来。
1.简单模式
说明: 最简单的一对一模式,一个生产者,一个消费者
2.工作队列模式 Work Queues
说明:一对多模式,一个生产者,多个消费者,一个队列,每个消费者从队列中获取唯一的消息。
有两种消息分发机制,轮询分发和公平分发:
轮询分发的特点是将消息轮流发送给每个消费者,在实际情况中,多个消费者,难免有的处理得快,有的处理得慢,如果都要等到一个消费者处理完,才把消息发送给下一个消费者,效率就大大降低了。
而公平分发的特点是,只要有消费者处理完,就会把消息发送给目前空闲的消费者,这样就提高消费效率了。
3.发布/订阅模式 Publish/Subscribe
说明:生产者将消息发送给 broker,由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到消息。消费者监听自己的队列并进行消费。
4.路由模式 Routing
说明:生产者将消息发送给 broker,由交换机根据 routing_key
分发到不同的消息队列,然后消费者同样根据 routing_key
来消费对应队列上的消息。
5.主题模式 Topics
说明:其实,主题模式应该算是路由模式的一种,也是通过 routing_key
来分发,只不过是 routing_key
支持了正则表达式,更加灵活。
6.RPC 模式 RPC
说明:通过消息队列来实现 RPC 功能,客户端发送消息到消费队列,消息内容其实就是服务端执行需要的参数,服务端消费消息内容,执行程序,然后将结果返回给客户端
总结
Publish/Subscribe,Routing,Topics 三种模式可以统一归为 Exchange 模式,只是创建时交换机的类型不一样,分别是 fanout、direct、topic。
本文来自博客园,作者:Sleepy-Person,转载请注明原文链接:https://www.cnblogs.com/Sleepy-Person/p/17097757.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~