RabbitMQ交换机- fanout
交换机
RabbitMQ中的消息传递模型的核心思想是,生产者从不将任何消息直接发送到队列。实际上,生产者通常甚至不知道是否将消息传递到任何队列。
相反,生产者只能将信息发送到交换机。交换是一件非常简单的事情。一方面,它收到来自生产者的消息,另一方将它们推送到队列。交换机必须准确知道接收到的消息如何处理。应该附加到特定队列吗?应该附加到很多队列吗?或者应该丢弃。其规则由交换类型定义 。
下面我就介绍下fanout类型的交换机。
Fanout
Fanout交换机的交换非常简单,就是将你收到的消息广播到所有知道的队列。
当一个消费者对应一个交换机的时候,我们可以实现消费者共享这个消息,下面是代码
生产者
交换机绑定队列既可以在生产者中实现,也可以在消费者中实现,此次我是在生产者中绑定了两个队列,再构造两个消费者与队列相对应
绑定
绑定代码:
//将队列绑定到交换机上
channel.queueBind(QUEUE_NAME,EXCHANGE_NAME,"");
channel.queueBind(QUEUE_NAME2,EXCHANGE_NAME,"");
生产者代码如下:
package MQ.Exchange.Fanout;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
importcom.rabbitmq.client.ConnectionFactory;
public classNewTask {
private final static String EXCHANGE_NAME="logs";
private final static String QUEUE_NAME ="hello_fanout2";
private final static String QUEUE_NAME2 ="hello_fanout3";
public