RabbitMQ学习

RabbitMQ是一个基于AMQP协议实现的消息队列,由Erlang语言开发。它包括Exchange和Queue,Exchange负责按规则路由消息到队列,Queue存储消息。工作模式包括简单模式、workqueue(工作模式)和订阅模式,涉及Direct、Fanout和Topic等交换机类型。在订阅模式中,消息会被路由到匹配的队列,由消费者消费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)实现的消息队列。

RabbitMQ

一、工作原理

在这里插入图片描述

  • Broker:消息队列服务进程,此进程包括两个部分:Exchange和Queue。
  • Exchange:消息队列交换机,按一定的规则将消息路由转发到某个队列,对消息进行过滤。
  • Queue:消息队列,存储消息的队列,消息到达队列并转发给指定的消费方。
  • Producer:消息生产者,即生产方客户端,生产方客户端将消费发送到MQ。
  • Consumer:消息消费者,即消费方客户端,接收MQ转发的消息。
  • Connection:Producer、Consumer和Broker的网络连接,是TCP连接。
  • Channel:信道,建立在TCP上面的虚拟连接。
  • Bind:绑定,Exchange和Queue之间的虚拟连接,其中可以包含一个或者多个RoutingKey。
  • RoutingKey:路由键,Producer发送消息给Exchange的时候,会发送一个RoutingKey,用来指定路由规则,Exchange根据RoutingKey把消息发送到指定Queue。

TCP通信需要三次握手、四次挥手,开销较大,所以在TCP上建立了Channel。TCP连接可以容纳无限的信道,所有线程共享一个TCP连接,每个线程私有一个信道,所以不会有并发上面的性能瓶颈。

二、工作模式:

1、简单模式

在这里插入图片描述

  • 一个生产者,一个队列,一个消费者。

生产者将消息发送到队列,消费者从队列中获取消息。

2、work queue(工作模式)

在这里插入图片描述

  • 一个生产者,一个队列,多个消费者。

生产者将消息发送到队列,有多个消费者监听同一个队列,谁先获取到消息谁负责消费,消息一旦被消费,就会消失,因此消息不会被重复执行。

3、订阅模式

在这里插入图片描述

  • 1个生产者,多个消费者。
  • 每一个消费者都有自己的一个队列。
  • 生产者将消息发送给交换机。
  • 每个队列都要和交换机绑定。
  • 消息经过交换机到达队列,最后被消费者消费。
  • 交换机如何处理消息,取决于交换机的类型。

交换机类型:

  1. Fanout:广播,将消息交给所有绑定到交换机的队列。
  2. Direct:定向,把消息交给符合RoutingKey的队列。
  3. Topic:通配符,把消息交给符合RoutingKey模糊匹配的队列。

3.1、订阅模式-Fanout

适用于Fanout交换机类型。

3.2、订阅模式-Direct

适用于Direct交换机类型。

3.3、订阅模式-Topic

适用于Topic交换机类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值