RabbitMQ-从基础到实战(4)— 消息的交换(下)

本文深入介绍了RabbitMQ中的Direct Exchange,如何通过routingKey匹配消息并分发到队列,以及如何配置队列绑定多个routingKey。通过实例展示了如何实现不同级别的日志由不同消费者处理,同时探讨了Direct Exchange与fanout Exchange的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



0.目录

RabbitMQ-从基础到实战(1)— Hello RabbitMQ

RabbitMQ-从基础到实战(2)— 防止消息丢失

RabbitMQ-从基础到实战(3)— 消息的交换(上)

1.简介

本章节和官方教程相似度较高,英文好的可以移步官方教程

在上一章的例子中,我们创建了一个消费者,生产日志消息,广播给两个消费者,对消息进行不同的处理。这一节,我们将对它进行扩展,实现一些更加高级的功能,例如:使消费者A只接受error级别的日志保存到硬盘,消费者B接收所有级别的消息进行打印。

本文中涉及到的所有概念(包括前面几章),都将摒弃个人经验,以官方文档为基础进行讲解,在书写本文的同时,也是我对RabbitMQ的重新学习。

2.绑定

回顾一下上一章的队列绑定代码

// 把刚刚获取的队列绑定到logs这个交换中心上,
channel.queueBind(queueName, "logs", "");

这段代码在消费者中,为什么生产者没有?因为在RabbitMQ中消息是发送到交换中心(exchange)的,这在上一张已经重点强调过。

上述代码可以理解成,queueName这个队列对logs这个exchange中的消息感兴趣,routingKey是""

在发送消息的basicPublish方法中,也有一个参数叫做routingKey,没错,他们是有关联的,下面会介绍

在不同的exchange类型中,routingKey扮演的角色也相应的不同,比如上一章我们使用的fanout(扇出,多贴切的名字,想象一下WOW中盗贼的刀扇)将忽略routingKey,所有绑定在fanout类型的exchange上的队列,都将接收到该exchange上的所有消息。

3.Direct Exchange

fanout类型的exchange没有给我们太多的灵活性,direct类型的echange非常简单,会匹配消息发布时的routingKey和queue的routingKey,完全相等则把消息放入该队列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值