Rabbitmq 五种工作模式

7/16/2020 2:06:00 PM

Rabbitmq 五种工作模式

1、简单模式

2、工作模式

3、发布订阅(publish/fanout)模式

4、路由模式(routing/direct)

5、topic主题模式


1、简单模式

        一个生产者,一个消费者

工作流程大致如下:

(1)生产者将消息发送给交换机;

(2)交换机把消息交给绑定的队列hello

(3)监听队列的消费者从消息队列中获取消息。

常见的应用场景:

(1)聊天;

(2)短信;

 


2、工作模式

       一个生产者对应多个消费者,但是只能有一个消费者获得消息!

  竞争消费者模式。

工作流程大致如下:

(1)生产者将消息发送给交换机;

(2)交换机把消息交给绑定的队列

(3)同时监听队列的多个消费者竞争资源,只有其中一个消费者能够获得消息。

常见的应用场景:

(1)抢红包;

(2)效率高的消费者消费消息多。可以用来进行负载均衡。


3、发布订阅(publish/fanout)模式

        一个消费者将消息首先发送到交换器,交换器绑定到多个队列,然后被监听该队列的消费者所接收并消费。

工作的大致流程如下:

 (1)生产者将消息发送给交换机;

 (2)交换机根据自身的类型,会把所有消息复制同步到所有的绑定队列上;

 (3)监听队列的消费者(一个队列一个消费者)可以获取消息。

常见的应用场景:

(1)比如一个商城系统需要在管理员上传商品新的图片时,前台系统必须更新图片,日志系统必须记录相应的日志,那么就可以将两个队列绑定到图片上传交换器上,一个用于前台系统更新图片,另一个用于日志系统记录日志。

(2)发朋友圈,公众号订阅等。


4、路由模式(routing/direct)

工作的大致过程:

(1)生产者将消息发送给交换机(消息头携带着路由键);

(2)交换机根据消息头中的routingKey 将消息发送相对应的与之绑定且routingkey相同的队列;

(3)消费者获取消息。

常见应用场景:

(1)利用消费者能够有选择性的接收消息的特性,比如我们商城系统的后台管理系统对于商品进行修改、删除、新增操作都需要更新前台系统的界面展示,而查询操作确不需要,那么这两个队列分开接收消息就比较好。

 


5、topic主题模式

      上面的路由模式是根据路由key进行完整的匹配(完全相等才发送消息),这里的通配符模式通俗的来讲就是模糊匹配

  符号“#”表示匹配一个或多个词,符号“*”表示匹配一个词。

工作的大致过程:

(1)生产者发送消息到交换器

(2)交换器根据消息头中的routingkey转发消息到相对应的队列中;

        如上*.orange.*可以匹配的路由键可以为:hello.orange.hello,a.oragne.e等

(3)监听队列相对应的消费者获取消息

常用的应用场景:

(1)提高了队列的选择性