转载请注明出处
0.目录
RabbitMQ-从基础到实战(1)— Hello RabbitMQ
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上的所有消息。