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版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
11月前
|
消息中间件 Ubuntu Java
SpringBoot整合MQTT实战:基于EMQX实现双向设备通信
本教程指导在Ubuntu上部署EMQX 5.9.0并集成Spring Boot实现MQTT双向通信,涵盖服务器搭建、客户端配置及生产实践,助您快速构建企业级物联网消息系统。
3157 1
|
11月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
740 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
11月前
|
消息中间件 存储 Java
RabbitMQ 和 Spring Cloud Stream 实现异步通信
本文介绍了在微服务架构中,如何利用 RabbitMQ 作为消息代理,并结合 Spring Cloud Stream 实现高效的异步通信。内容涵盖异步通信的优势、RabbitMQ 的核心概念与特性、Spring Cloud Stream 的功能及其与 RabbitMQ 的集成方式。通过这种组合,开发者可以构建出具备高可用性、可扩展性和弹性的分布式系统,满足现代应用对快速响应和可靠消息传递的需求。
602 2
RabbitMQ 和 Spring Cloud Stream 实现异步通信
|
消息中间件 缓存 NoSQL
基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
总的来说,借助Spring Data Redis和RabbitMQ,我们可以轻松实现字符串缓存和计数的功能。而关键的部分不过是一些"厨房的套路",一旦你掌握了这些套路,那么你就像厨师一样可以准备出一道道饕餮美食了。通过这种方式促进数据处理效率无疑将大大提高我们的生产力。
424 32
|
监控 安全 Java
Java 开发中基于 Spring Boot 3.2 框架集成 MQTT 5.0 协议实现消息推送与订阅功能的技术方案解析
本文介绍基于Spring Boot 3.2集成MQTT 5.0的消息推送与订阅技术方案,涵盖核心技术栈选型(Spring Boot、Eclipse Paho、HiveMQ)、项目搭建与配置、消息发布与订阅服务实现,以及在智能家居控制系统中的应用实例。同时,详细探讨了安全增强(TLS/SSL)、性能优化(异步处理与背压控制)、测试监控及生产环境部署方案,为构建高可用、高性能的消息通信系统提供全面指导。附资源下载链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
2791 0
|
消息中间件 存储 Java
【RabbitMQ】-SpringAMQP以及Work模型
RabbitMQ的工作模型通过消息队列和消费者的并行处理,极大地提高了任务处理的效率。通过Spring AMQP可以方便地与RabbitMQ进行交互,实现高效的消息传递和任务处理。本文详细介绍了如何配置和使用Spring AMQP来实现RabbitMQ的工作模型,包括生产者、消费者的定义以及消息的发送和接收过程。
409 14
|
消息中间件 存储 JSON
rabbitmq基础教程(ui,java,springamqp)
本文提供了RabbitMQ的基础教程,包括如何使用UI创建队列和交换机、Java代码操作RabbitMQ、Spring AMQP进行消息发送和接收,以及如何使用不同的交换机类型(fanout、direct、topic)进行消息路由。
324 0
rabbitmq基础教程(ui,java,springamqp)
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
471 6