扇形交换机也叫做广播交换机
,通过交换机将消息发送给所有的队列
。
一、案例需求
- 在RabbitMQ控制台中,声明队列
fanout.queue1
和fanout.queue2
。 - 在RabbitMQ控制台中,声明交换机
mt.fanout
,将两个队列与其绑定。 - 在生产者服务中,向交换机
mt.fanout
发送消息。 - 在消费者服务中,编写两个消费者方法,分别监听
fanout.queue1
和fanout.queue2
。
二、基础配置
首先需要创建两个队列fanout.queue1
和fanout.queue2
。
创建一个广播交换机mt.fanout
,需要注意的是,在创建交换机的时候需要修改交换机的类型fanount广播交换机
。
交换机创建之后,点击交换机的名称,绑定交换机与队列之间的关系。
三、代码实现
生产者
/**
* 给交换机发送消息(广播交换机)
* exchange:交换机的名称
* routingKey:直接填写NULL
* Object:传递的参数
* @throws InterruptedException
*/
@Test
public void fanoutExchangeTest() throws InterruptedException {
String exchangeName = "mt.fanout";
String message = "Fanout Exchange ......";
rabbitTemplate.convertAndSend(exchangeName, null, message);
}
消费者,特别注意的是消费者绑定的是队列,而不是交换机。
@RabbitListener(queues = "fanout.queue1")
public void listenFanoutQueue1(String message) throws InterruptedException {
System.out.println(String.format("消费者1,收到了fanout.queue1: %s", message));
}
@RabbitListener(queues = "fanout.queue2")
public void listenFanoutQueue2(String message) throws InterruptedException {
System.err.println(String.format("消费者2,收到了fanout.queue2: %s", message));
}