随笔 - 26,  文章 - 0,  评论 - 3,  阅读 - 8725

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。

posted on   Sleepy-Person  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示