订阅与发布
之前的实例我们都是将任务精确的转发给某一个工作线程(消费者)。这节我们讲讲怎么将一个任务转发给多个消费者。这种模式就是闻名的“订阅/发布”模式。
我们的初步想法便是一个发布者发布了一个消息,多个消费者接收到消息,做不同的事情。
交换机(Exchanges)
前面已经说了了我们是通过队列来接受和发送消息的(p-q-c)[p:发布者,q:队列,r:消费者]。消息是由p 发布到q,q 再发给c。其实Rabbit又一个消息模型,在我们完成实例前,我们先来看看Rabbit的所有消息模型。
在Rabbit消息模型中最核心的点是生产者从不直接发送消息给队列。实际上,生产者都不知道生产的消息给了那个队列。
相反的,生产者只是给exchange(交换机)发送消息。交换机实际上是一个非常简单的东西,一边是从生产者接受消息,另一边就是将消息推送给队列。交换机必须明确的知道他们接到消息后该怎么处理消息:应该是将消息发送给一个明确的队列?还是应该给所有的队列?又或者是直接忽略不管?这些规则都是由交换机的类型去定义的。

有一些可用的交换机类型是:direc,topic,headers,fanout。今天我们讲的类型主要是fanout。我们可以先声明一个类型:
