RabbitMQ几种工作模式介绍

1.RabbitMQ

MQ:全称为message queue,即消息队列。它是由erlang语言开发,基于AMQP(Advanced Message Queue Protocol 高级消息队列协议)协议实现的队列。

2.工作原理

RabbitMQ的基本结构

                                

组成部分说明:

  • Producer 消息生产者,即生产方客户端,将消息发送给MQ
  • Consumer 消息消费者,即消费者客户端,接收MQ发送的信息
  • Broker 消息队列服务进程,此服务包括两部分:exchange、queue
  • Exchange 消息队列交换机,交换机按照一定的规则将消息路由转发到队列,对消息进行过滤。
  • Queue 消息队列,存储消息,消息到达队列并将消息转发给消费方。

信息发送接收流程:

发送消息:

  1. 生产者和broker建立TCP连接 即MQ的Connection
  2. 生产者和broker建立通道,通道是通过Connection创建的
  3. 生产者通过通道将消息发送给broker,由exchange将消息转发
  4. exchange将信息转发给指定的队列

接收信息:

  1. 消费者和broker建立TCP连接
  2. 消费者和broker建立通道
  3. 消费者监听队列
  4. 当消息到达Queue时,broker默认将消息推送给消费者
  5. 消费者接收到消息

3.工作模式

RabbitMQ有6中工作模式,分别为:work queue、Publish/Subscribe、Routing、Topic、Hreader、RPC

3.1 work queue 工作队列

                                                 

work queue是一个较为基础的工作模式,其工作模式是多个消费者共同消费同一个队列中的信息。

启动多个消费者,当生产者将消息发送给队列时,一条信息只会被一个消费者接收,rabbit采用轮询的方式将消息平均发送给消费者,消费者在处理完某个信息后才会接收到下一条信息。

3.2 Publish/Subscribe 发布订阅模式

                                            

Publish/Subscribe模式是work queue的升级版,生产者通过交换机将信息转发给绑定到交换机的相应队列,每个绑定到交换机的队列都将收到信息;消费者会监听自己的队列,然后队列会将信息发送给监听它的消费者。

Publish/Subscribe模式下exchange的类型是fanout

3.3 Routing 路由模式

                               

Routing模式下exchange的类型是direct,相较Publish/Subscribe模式该模式多了routingkey,即如上图所示,当routingkey设置为error时上下两个队列都会接收到来自交换机转发的信息;routingkey为info时,只有下面的队列能收到交换机转发来的信息。

3.4 Topic 通配符模式

                            

Topic模式下交换机类型为topic,该模式和Routing模式一样,只不过是这个模式下的routingkey可以用通配符

统配符规则:
中间以“.”分隔。
符号#可以匹配多个词,符号*可以匹配一个词语。

3.5 Hreader模式

header模式与routing不同的地方在于,header模式取消routingkey,使用header中的 key/value(键值对)匹配 队列

3.6 RPC模式

                    

RPC即客户端远程调用服务端的方法 ,使用MQ可以实现RPC的异步调用,基于Direct交换机实现,流程如下:

  1. 客户端即是生产者就是消费者,向RPC请求队列发送RPC调用消息,同时监听RPC响应队列。
  2. 服务端监听RPC请求队列的消息,收到消息后执行服务端的方法,得到方法返回的结果
  3. 服务端将RPC方法 的结果发送到RPC响应队列
  4. 客户端(RPC调用方)监听RPC响应队列,接收到RPC调用结果。

本文只是简单的介绍下RabbitMQ和其工作模式,如果大家想知道更详细的请看官网介绍。

地址:RabbitMQ Tutorials — RabbitMQ

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空、大师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值