//声明交换器(fanout:分发)rabbitmqctl list_exchanges 查看交换器规则
channel.exchangeDeclare("logs", "fanout");
//创建临时队列
String queueName = channel.queueDeclare().getQueue();
String message = "this is message in the fanout'exchange ";
//发送消息到交换器中
channel.basicPublish( "logs", "", null, message.getBytes());
//交换器绑定队列
channel.queueBind(queueName, "logs", "");
RabbitMQ中消息传递模型的核心思想是:生产者不直接发送消息到队列。实际的运行环境中,生产者是不知道消息会发送到那个队列上,她只会将消息发送到一个交换器,交换器也像一个生产线,她一边接收生产者发来的消息,另外一边则根据交换规则,将消息放到队列中。
交换器的规则有:
direct (直连)
topic (主题)
headers (标题)
fanout (分发)
匿名交换器
在之前的教程中,我们知道,发送消息到队列时根本没有使用交换器,但是消息也能发送到队列。这是因为RabbitMQ选择了一个空“”字符串的默认交换器。
第一个参数就是交换器的名称。如果输入“”空字符串,表示使用默认的匿名交换器。
第二个参数是【routingKey】路由线索
匿名交换器规则:
发送到routingKey名称对应的队列。
临时队列
如果要在生产者和消费者之间创建一个新的队列,又不想使用原来的队列,临时队列就是为这个场景而生的:
首先,每当我们连接到RabbitMQ,我们需要一个新的空队列,我们可以用一个随机名称来创建,或者说让服务器选择一个随机队列名称给我们。
一旦我们断开消费者,队列应该立即被删除。
以上转载