RabbitMQ的五种工作模式和两种消费模式 | 您所在的位置:网站首页 › 薪资模式有哪几种 › RabbitMQ的五种工作模式和两种消费模式 |
RabbitMQ提供了6种消息模型,但是第6种其实是RPC,并不是MQ,因此不予学习。那么也就剩下5种。但是其实3、4、5这三种都属于订阅模型,只不过进行路由的方式不同。
P(producer/ publisher):生产者,一个发送消息的用户应用程序。 C(consumer):消费者,消费和接收有类似的意思,消费者是一个主要用来等待接收消息的用户应用程序 队列(红色区域):rabbitmq内部类似于邮箱的一个概念。虽然消息流经rabbitmq和你的应用程序,但是它们只能存储在队列中。队列只受主机的内存和磁盘限制,实质上是一个大的消息缓冲区。许多生产者可以发送消息到一个队列,许多消费者可以尝试从一个队列接收数据。 总之:生产者将消息发送到队列,消费者从队列中获取消息,队列是存储消息的缓冲区。 2、work消息模型(Work queues)
1、1个生产者,多个消费者 2、每一个消费者都有自己的一个队列 3、生产者没有将消息直接发送到队列,而是发送到了交换机 4、每个队列都要绑定到交换机 5、生产者发送的消息,经过交换机到达队列,实现一个消息被多个消费者获取的目的 X(Exchanges):交换机一方面:接收生产者发送的消息。另一方面:知道如何处理消息,例如递交给某个特别队列、递交给所有队列、或是将消息丢弃。到底如何操作,取决于Exchange的类型。 Exchange类型有以下几种: Fanout:广播,将消息交给所有绑定到交换机的队列 Direct:定向,把消息交给符合指定routing key 的队列 Topic:通配符,把消息交给符合routing pattern(路由模式) 的队列 Exchange(交换机)只负责转发消息,不具备存储消息的能力,因此如果没有任何队列与Exchange绑定,或者没有符合路由规则的队列,那么消息会丢失! (1)广播模式(Fanout)Fanout,也称为广播。 在广播模式下,消息发送流程是这样的: 1) 可以有多个消费者 2) 每个消费者有自己的queue(队列) 3) 每个队列都要绑定到Exchange(交换机) 4) 生产者发送的消息,只能发送到交换机,交换机来决定要发给哪个队列,生产者无法决定。 5) 交换机把消息发送给绑定过的所有队列 6) 队列的消费者都能拿到消息。实现一条消息被多个消费者消费 (2)订阅模型-Direct
P:生产者,向Exchange发送消息,发送消息时,会指定一个routing key。 X:Exchange(交换机),接收生产者的消息,然后把消息递交给 与routing key完全匹配的队列 C1:消费者,其所在队列指定了需要routing key 为 error 的消息 C2:消费者,其所在队列指定了需要routing key 为 info、error、warning 的消息 (3)订阅模型-Topic
通配符规则: 中间以“.”分隔。 符号#可以匹配多个词,符号*可以匹配一个词语。 说完了工作模式,接下来说一下RabbitMQ的两种消费模式 1、pull模式消费者主动从消息中间件中拉取消息。 pull模式每次接收消息都需要拉去一下队列的信息,由于是拉取的,实用性较差,不能及时有效获取最新的信息,能有效降低内存消耗。 2、push模式消息中间件主动将消息推送给消费者。 push模式接收消息是最有效的一种消息处理方式。当我们使用该模式时,我们的消费端只要启动后,就相当于使用了订阅模式,只要生产断不断推送信息,消费端就会持续接收信息。 |
CopyRight 2018-2019 实验室设备网 版权所有 |