RabbitMQ之发布订阅
将同一个队列的消息发送给多个消费者的模式就是“发布/订阅”, 这种模式的基础是将消息广播到所有的接收器上。 实际上,RabbitMQ中消息传递模型的核心思想是: 生产者不直接发送消息到队列。 实际的运行环境中,生产者是不知道消息会发送到哪个队列上, 她只会将消息发送到一个交换器, 交换器也像一个生产线,她一边接收生产者发来的消息,另外一边则根据交换规则,将消息放到队列中。 交换器必须知道她所接收的消息是什么?它应该被放到哪个队列中?它应该被添加到多个队列吗?还是应该丢弃? 这些规则都是按照交换器的规则来确定的。 交换器的规则有: direct (直连) topic (主题) headers (标题) fanout (分发)也有翻译为扇出的 我们将使用【fanout】类型创建一个名称为myexchange的交换器 channel.exchangeDeclare("myexchange", "fanout"); 分发交换器很简单,你通过名称也能想到,她是广播所有的消息 通过rabbitmqctl list_exchanges指令可以列出服务器上所有可用的交换器列表 这个列表里面所有以【amq.*】开头的交换器都是RabbitMQ默认创建的。在生产环境中,可以自己定义。 在之前的实例中,我们知道,发送消息到队列时根本没有使用交换器,但是消息也能发送到队列。