在上一篇博客《RabbitMQ入门:发布/订阅(Publish/Subscribe)》中,我们认识了fanout类型的exchange,它是一种通过广播方式发送消息的路由器,所有和exchange建立的绑定关系的队列都会接收到消息。但是有一些场景只需要订阅到一部分消息,这个时候就不能使用fanout 类型的exchange了,这个就引出来今天的“猪脚”--Direct Exchange,通过Routing Key来决定需要将消息发送到哪个或者哪些队列中。
接下来请收看详细内容:
- Direct Exchange(直接路由器)
- 多重绑定
- 代码实例
一、Direct Exchange(直接路由器)
在上文中介绍exchange的时候,对direct exchange进行了简单介绍,它是一种完全按照routing key(路由关键字)进行投递的:当消息中的routing key和队列中的binding key完全匹配时,才进行会将消息投递到该队列中。这里提到了一个routing key和binding key(绑定关键字),是什么东东?
- routing key:
在发送消息的时候,basicPublish的第二个参数就是routing key,由于上次是fanout 类型的exchange 进行广播方式投递,这个字段不会影响投递结果,因此我们这里就传入了“”,但是在direct 类型的exchange中我们就不能传入""了,需要指定具体的关键字。

- binding key:
我们在前文中建立绑定关系的时候,queueBind的第三个参数就是绑定关键字

我们声明direact exchange的时候使用:

二、多重绑定
多个队列以相同的绑定键绑定到同一个路由器的情况,我们称之为多重绑定。
工作模型为(P代表生产者,X代表路由器,红色的Q代表队列,C代表消费者):


本文介绍了RabbitMQ中的Direct Exchange,它是通过Routing Key来决定消息发送到哪个队列。Direct Exchange遵循完全匹配Routing Key的原则,只有当消息的Routing Key与队列的Binding Key一致时,消息才会被投递。文章还讨论了多重绑定的概念,并提供了生产者和消费者的代码实例,展示了如何设置Routing Key和Binding Key以实现特定的消息路由。
最低0.47元/天 解锁文章
2816

被折叠的 条评论
为什么被折叠?



