SpringBoot-RabbitMQ05-交换器【fanout】介绍

简介: FanoutExchange 的数据交换策略是把所有到达 FanoutExchang 的消息转发给所有与它绑定的Queue ,在这种策略中, routingkey 将不起任何作用.



交换器介绍

 RabbitMQ中有三种主要的交互器分别如下

image.png

Fanout

 FanoutExchange 的数据交换策略是把所有到达 FanoutExchang 的消息转发给所有与它绑定的Queue ,在这种策略中, routingkey 将不起任何作用.

image.pngimage.png

1.创建消费者

项目结构

image.png

配置文件

spring.application.name=springcloud-mq
spring.rabbitmq.host=192.168.88.150
spring.rabbitmq.port=5672
spring.rabbitmq.username=dpb
spring.rabbitmq.password=123
mq.config.exchange=order.fanout
#短信服务队列名称
mq.config.queue.sms=order.sms
#push 服务队列名称
mq.config.queue.push=order.push

两个消费者

@Component
@RabbitListener(
bindings=@QueueBinding(
        value=@Queue(value="${mq.config.queue.sms}",autoDelete="true"),
                exchange=@Exchange(value="${mq.config.exchange}",type= ExchangeTypes.FANOUT)
        )
)
public class SmsReciver {
    /**
     * 接收消息的方法。采用消息队列监听机制
     * @param msg
     */
    @RabbitHandler
    public void process(String msg){
         System.out.println("Sms........receiver: "+msg);
    }
}
@Component
@RabbitListener(
bindings=@QueueBinding(
        value=@Queue(value="${mq.config.queue.push}",autoDelete="true"),
                exchange=@Exchange(value="${mq.config.exchange}",type= ExchangeTypes.FANOUT)
        )
)
public class PushReciver {
    /**
     * 接收消息的方法。采用消息队列监听机制
     * @param msg
     */
    @RabbitHandler
    public void process(String msg){
         System.out.println("Push........receiver: "+msg);
    }
}

启动后等待接收消息即可~

2.创建订单服务

项目结构

image.png

配置文件

spring.application.name=springcloud-mq
spring.rabbitmq.host=192.168.88.150
spring.rabbitmq.port=5672
spring.rabbitmq.username=dpb
spring.rabbitmq.password=123
#设置交换器的名称
mq.config.exchange=order.fanout

服务提供者

/**
 * @program: rabbitmq-direct-provider
 * @description: 发送者
 * @author: 波波烤鸭
 * @create: 2019-05-22 15:51
 */
@Component
public class Sender {
    @Autowired
    private AmqpTemplate rabbitAmqpTemplate;
    //exchange 交换器名称
    @Value("${mq.config.exchange}")
    private String exchange;
    /*
     * 发送消息的方法
     */
    public void send(String msg){
        //向消息队列发送消息
        //参数一:交换器名称。
        //参数二:路由键
        //参数三:消息
        this.rabbitAmqpTemplate.convertAndSend(this.exchange,"", msg);
    }
}

单元测试

@RunWith(SpringRunner.class)
@SpringBootTest(classes = RabbitmqDirectProviderApplication.class)
public class RabbitmqDirectProviderApplicationTests {
    @Autowired
    private Sender sender;
    @Test
    public void contextLoads() throws Exception{
        sender.send("hello .... ");
    }
}

启动后查看消费者的控制台

image.png


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4月前
|
消息中间件 Java Spring
SpringBoot实现RabbitMQ的广播交换机(SpringAMQP 实现Fanout广播交换机)
SpringBoot实现RabbitMQ的广播交换机(SpringAMQP 实现Fanout广播交换机)
52 2
|
24天前
|
消息中间件 开发者
【RabbitMQ深度解析】Topic交换器与模式匹配:掌握消息路由的艺术!
【8月更文挑战第24天】在消息队列(MQ)体系中,交换器作为核心组件之一负责消息路由。特别是`topic`类型的交换器,它通过模式匹配实现消息的精准分发,适用于发布-订阅模式。不同于直接交换器和扇形交换器,`topic`交换器支持更复杂的路由策略,通过带有通配符(如 * 和 #)的模式字符串来定义队列与交换器间的绑定关系。
38 2
|
4月前
|
消息中间件 Java Kafka
RabbitMQ安装和5种不同的消息模型(BasicQueue,WorkQueue,Fanout Exchange,Direct Exchange,Topic Exchange)与SpringAMQP
RabbitMQ安装和5种不同的消息模型(BasicQueue,WorkQueue,Fanout Exchange,Direct Exchange,Topic Exchange)与SpringAMQP
|
消息中间件
五、RabbitMQ 之 SpringAMQP 实现 Fanout 交换机
五、RabbitMQ 之 SpringAMQP 实现 Fanout 交换机
|
11月前
|
消息中间件 存储 Java
RabbitMQ之Fanout(扇形) Exchange解读
RabbitMQ之Fanout(扇形) Exchange解读
|
消息中间件 存储
RabbitMQ学习(七):交换器
RabbitMQ学习(七):交换器
RabbitMQ学习(七):交换器
|
消息中间件 存储 JSON
【RabbitMQ】Fanout、Direct、Topic、消息转换器
【RabbitMQ】Fanout、Direct、Topic、消息转换器
265 0
【RabbitMQ】Fanout、Direct、Topic、消息转换器
|
消息中间件 JSON 网络协议
Springboot整合Rabbitmq,Direct、Fanout、Topic
Springboot整合Rabbitmq,Direct、Fanout、Topic
Springboot整合Rabbitmq,Direct、Fanout、Topic
|
消息中间件
7、RabbitMQ教程-Fanout Exchange类型的基本使用demo
7、RabbitMQ教程-Fanout Exchange类型的基本使用demo
112 0
7、RabbitMQ教程-Fanout Exchange类型的基本使用demo
|
消息中间件 存储
【RabbitMQ】——三种Exchange模式(Fanout、Direct、Topic)
【RabbitMQ】——三种Exchange模式(Fanout、Direct、Topic)
279 0
【RabbitMQ】——三种Exchange模式(Fanout、Direct、Topic)