SpringBoot实现RabbitMQ的广播交换机(SpringAMQP 实现Fanout广播交换机)

简介: SpringBoot实现RabbitMQ的广播交换机(SpringAMQP 实现Fanout广播交换机)

广播交换机的特定是: 将消息交给所有绑定到交换机的队列


在广播模式下,消息发送流程是这样的:


1) 可以有多个队列

2) 每个队列都要绑定到 Exchange(交换机)

3) 生产者发送的消息,只能发送到交换机,交换机来决定要发给哪个队列,生产者无法决定

4) 广播类型的交换机会把消息发送给绑定过的所有队列

5) 订阅队列的消费者都能拿到消息

我们的计划是这样的:


  • 创建一个交换机 test2024.fanoutExchange,类型是Fanout
  • 创建两个队列 test2024.fanout.queue1 和 test2024.fanout.queue2 ,绑定到交换机 test2024.fanoutExchange


声明交换机


Spring提供了一个接口Exchange,来表示所有不同类型的交换机:

首先我们在配置类 声明处我们所需要的交换机和队列 并绑定其关系

//  声明一个广播类型的交换机/ 广播交换机特点 : 将消息交给所有绑定到交换机的队列
@Bean
public FanoutExchange testFanoutExchange() {
    return new FanoutExchange("test2024.fanoutExchange");
}

/** 声明两个队列 和 广播交换机绑定 */
@Bean
public Queue testQueue1() {
    return new Queue("test2024.fanout.queue1");
}

@Bean
public Queue testQueue2() { return new Queue("test2024.fanout.queue2");}

@Bean
public Binding bindingTestQueue1FanoutExchange(Queue testQueue1, 
  FanoutExchange testFanoutExchange) {
    return BindingBuilder.bind(testQueue1).to(testFanoutExchange);
}

@Bean
public Binding bindingTestQueue2FanoutExchange(Queue testQueue2, 
  FanoutExchange testFanoutExchange) {
    return BindingBuilder.bind(testQueue2).to(testFanoutExchange);
}
/** 声明两个队列 和 广播交换机绑定 */


消息接收


@RabbitListener(queues = "test2024.fanout.queue1")
public void rabbitListener3(String message) {
    System.out.println("监听广播类型交换机的1-接收到消息:" + message);
}

@RabbitListener(queues = "test2024.fanout.queue2")
public void rabbitListener4(String message) {
    System.out.println("监听广播类型交换机的2-接收到消息:" + message);
}


消息发送


//  测试广播交换机
@Test
public void test02(){
    rabbitTemplate.convertAndSend("test2024.fanoutExchange", "", "this is a message from fanout!");
}


效果


至此 就实现了 Fanout 交换机的演示.

相关实践学习
消息队列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
相关文章
|
1月前
|
消息中间件 存储 缓存
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
145 7
RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
|
17天前
|
消息中间件 存储 JSON
rabbitmq基础教程(ui,java,springamqp)
本文提供了RabbitMQ的基础教程,包括如何使用UI创建队列和交换机、Java代码操作RabbitMQ、Spring AMQP进行消息发送和接收,以及如何使用不同的交换机类型(fanout、direct、topic)进行消息路由。
13 0
rabbitmq基础教程(ui,java,springamqp)
|
1月前
|
消息中间件 存储 Java
SpringCloud基础4——RabbitMQ和SpringAMQP
消息队列MQ、RabbitMQ、SpringAMQP高级消息队列协议、发布/订阅模型、fanout、direct、topic模式
SpringCloud基础4——RabbitMQ和SpringAMQP
|
2月前
|
消息中间件 Java 测试技术
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
这篇文章是关于如何在SpringBoot应用中整合RabbitMQ的消息中间件。内容包括了在SpringBoot项目中添加RabbitMQ的依赖、配置文件设置、启动类注解,以及如何通过单元测试来创建交换器、队列、绑定,并发送和接收消息。文章还介绍了如何配置消息转换器以支持对象的序列化和反序列化,以及如何使用注解`@RabbitListener`来接收消息。
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
|
1月前
|
消息中间件 JSON Java
玩转RabbitMQ声明队列交换机、消息转换器
玩转RabbitMQ声明队列交换机、消息转换器
58 0
|
2月前
|
网络协议 Java 物联网
MQTT(EMQX) - SpringBoot 整合MQTT 连接池 Demo - 附源代码 + 在线客服聊天架构图
MQTT(EMQX) - SpringBoot 整合MQTT 连接池 Demo - 附源代码 + 在线客服聊天架构图
557 2
|
1月前
|
消息中间件 存储
RabbitMQ-死信交换机和死信队列
死信队列和死信交换机是RabbitMQ提供的一个非常实用的功能,通过合理使用这一机制,可以大大增强系统的健壮性和可靠性。它们不仅能有效解决消息处理失败的情况,还能为系统的错误追踪、消息延迟处理等提供支持。在设计系统的消息体系时,合理规划和使用死信队列和死信交换机,将会为系统的稳定运行提供一个有力的
46 0
|
5月前
|
Java Maven
SpringBoot集成RabbitMQ-三种模式的实现
SpringBoot集成RabbitMQ-三种模式的实现
361 0
|
5月前
|
消息中间件 Java Spring
Springboot 集成Rabbitmq之延时队列
Springboot 集成Rabbitmq之延时队列
177 0
|
11月前
|
消息中间件 Java Maven
消息中间件系列教程(13) -RabbitMQ-SpringBoot集成RabbitMQ
消息中间件系列教程(13) -RabbitMQ-SpringBoot集成RabbitMQ
83 0