RabbitMQ实体关系介绍

首先认识以下RabbitMQ中的实体:

1. 发布者/生产者(producer)

发布消息的应用程序。

2. 交换机(exchange)

连接发布者和队列的中间组件。接收生产者发送的消息,并根据Bingding规则将消息发送到队列中,ExchangeType决定了Exchange路由消息的行为。

3. 绑定(Binding)

是一种方式,表明Exchange和Queue是如何联系的。生产者在将消息发送给Exchange的时候,一般会指定一个routing key,来指定这个消息的路由规则。这个routing key需要与Exchange Type及binding key联合使用才能生效。在正常使用时,一般Exchange Type与binding key都已经固定了,我们的生产者就可以在发送消息给Exchange时,只需要通过指定routing key来决定消息流向哪里。对于消费者来说,只用知道virtual host 和queue的名称就可以了。而对于生产者,则需要知道exchange和routing key的名称,相对而言queue的名称就不那么重要了。

4. 队列(queue)

消息存储的缓冲,等待消费者来取。

5. 消费者(consumer)

接收消息的应用程序。

RabbitMQ消息模型的核心理念是:发布者(producer)不会直接发送任何消息给队列。事实上,发布者(producer)甚至不知道消息是否已经被投递到队列。

6. 介绍交换机

对于交换机,它一边从发布者方接收消息,一边把消息推送到队列。交换机必须知道如何处理它接收到的消息,是应该推送到指定的队列还是是多个队列,或者是直接忽略消息。这些规则是通过交换机类型(exchange type)来定义的。下面介绍最常见的三种Exchange Type: direct、fanout、topic。

6.1 direct规则

image

如果是direct类型,就会将消息中的RoutingKey与该Exchange关联的所有Binding中的BindingKey进行比较,如果相等,则发送到该Binding对应的Queue中。有一个需要注意的地方:如果找不到指定的exchange,就会报错。但routing key找不到的话,不会报错,这条消息会直接丢失,所以此处要小心。

6.2 fanout规则

image
fanout 扇形队列,顾名思义,就是像风扇吹面粉一样,吹得到处都是。如果使用fanout类型的exchange,那么routing key就不需要了。因为凡是绑定到这个exchange的queue,都会收到消息。因此这种规则实现了常用的发布/订阅模式。如果交换机没有绑定任何Queue,则消息就会被丢弃。

6.3 topic规则

image

这种模式类似于模糊匹配,每个交换机都绑定到自己关心的routingkey到Queue的绑定上,因此与direct交换机一样,必须指定routingkey。匹配模式可看上述例子,如果交换机没有匹配任何Queue,则消息会被丢弃。

以上内容就是关于RabbitMQ实体关系介绍的全部内容了,谢谢你阅读到了这里!

Author:zhaoyh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值