消息中间件RabbitMQ-分列模式(Fanout)
分列模式(Fanout)
什么是分列(Fanout)模式
当我们需要将消息一次发给多个队列时,需要使用这种模式。如下图:

任何发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(Binding)的所有Queue上。
1)可以理解为路由表的模式;
2)这种模式不需要RouteKey;
3)这种模式需要提前将Exchange与Queue进行绑定,一个Exchange可以绑定多个Queue,一个Queue可以同多个Exchange进行绑定;
4)如果接受到消息的Exchange没有与任何Queue绑定,则消息会被抛弃;
交换器绑定队列
1)在queue中添加队列quancheng和bancheng;

2)新建交换器saishi;

3)将quancheng和bancheng两个队列绑定到交换器saishi
3.1)点击saishi进入交换器管理界面

3.2)点击Bindings添加绑定 quancheng和bancheng


3.3)绑定后效果如下:

代码实现
消息生产者
package com.tensquare;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest(classes=ApplicationDirect.class)
public class MqTest {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testSendFanout(){
rabbitTemplate.convertAndSend("saishi","", "分列模式跑起......");
}
}
消息消费者
队列quancheng消费者
package com.tensquare;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues="quancheng" )
public class Customer2 {
@RabbitHandler
public void showMessage(String message){
System.out.println("quancheng接收到消息:"+message);
}
}
队列bancheng消费者
package com.tensquare;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues="bancheng")
public class Customer3 {
@RabbitHandler
public void showMessage(String message) {
System.out.println("bancheng接收到消息:"+message);
}
}
测试
启动消费者工程,发送消息测试
bancheng接收到消息:分列模式跑起......
quancheng接收到消息:分列模式跑起......
本文介绍了RabbitMQ的分列(Fanout)模式,该模式用于一次性将消息广播到多个队列。通过创建交换器saishi并将其绑定到quancheng和bancheng两个队列,实现消息的多队列分发。同时,文章提供了消息生产者和消费者的代码示例,并进行了测试验证。
749

被折叠的 条评论
为什么被折叠?



