发布/订阅(Publish/Subscribe)
在上一篇教程中,我们学习了创建工作队列。这种情况假定工作队列中的每一个任务只会被分配给一个工作者(worker)。在这篇教程中,我们要做的事情完全相反——我们会把消息发送给多个消费者。这种模式被叫做 “发布/订阅模式”。
我们将通过建立一个简单的日志系统来解释这种模式。系统由两个程序组成——第一个程序负责发布日志信息,第二程序接收并打印出这些信息。
在这个日志系统中,每一个运行中的接收者进程都会收到消息。这种情况下,我们可以实现不同的消费者执行不同的功能,有的可以直接将日志记录到磁盘,同时,其他消费者可能在向屏幕中输出日志信息。
交换机(exchange)
在前面的教程中,我们都是通过queue发送和接收消息。现在是时候介绍一下完整的消息模型了。
我们这里快速回顾一下前面的教程所做的事情:
生产者程序负责发送消息。
队列负责存储消息。
消费者程序负责接收消息。
在RabbitMQ的消息模型中,核心思想是生产者不会直接向队列发送任何消息。通常,生产者甚至都不知道消息是否真的发送到了某个队列中。
相反,消费者只会向交换机(exchange)发送消息。交换机其实是一个非常简单的东西。一方面它会从消费者方向接收信息,另一方面把这些消息推送到队列。交换机必须明确的知道如何处理接收到的消息。这条消息该被推送到某个特定的队列吗?或者是多个队列中,再或者被丢弃掉,这些都是通过交换机类型(