一、交换机
1. 概念
在上一节中,我们创建了一个工作队列。我们假设的是工作队列背后,每个任务都恰好交付给一个消费者(工作进程)。在这一部分中,我们将做一些完全不同的事情-我们将消息传达给多个消费者。
RabbitMQ消息传递模型的核心思想是:生产者生产的消息从不会直接发送到队列。实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中。
生产者只能将消息发送到交换机(exchange),交换机工作的内容非常简单,一方面它接收来自生产者的消息,另一方面将它们推入队列。交换机必须确切知道如何处理收到的消息。是应该把这些消息放到特定队列还是说把他们到许多队列中还是说应该丢弃它们。这就的由交换机的类型来决定。
2. Exchange类型
直接(direct)、主题(topic)、标题(headers)、扇出(fanout)
3. 无名Exchange
在本教程的前面我们对Exchange一无所知,但是仍然能够将消息发送到队列,之前能实现的原因是我们使用默认的交换机,我们通过字符串(“”)进行表示。
第一个参数是交换机的名称,空字符串表示默认或者无名交换机:消息能够路由发送到队列其实是由routingKey(bindingkey)绑定key指定的,如果它存在的话
二、临时队列
创建临时队列
String queueName = channel.queueDeclare().getQueue();
三、绑定(bindings)
binding其实是Exchange 和queue之间的桥梁,他告诉我们Exchange和那个队列进行了绑定关系。