FanoutExchange广播(扇形)交换机

news2025/1/11 0:12:58

目录

一、简介

二、代码展示

父pom文件

pom文件

配置文件

config

生产者

消费者

测试

结果


一、简介

扇型(广播)交换机,这个交换机没有路由键概念,就算你绑了路由键也是无视的。 这个交换机在接收到消息后,会直接转发到绑定到它上面的所有队列

广播交换机是不需要RoutingKey的;

二、代码展示

 父pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.1</version>
<!--        <version>2.2.5.RELEASE</version>-->
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.chensir</groupId>
    <artifactId>spring-boot-rabbitmq</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-rabbitmq</name>

    <properties>
        <java.version>8</java.version>
        <hutool.version>5.8.3</hutool.version>
        <lombok.version>1.18.24</lombok.version>
    </properties>

    <description>spring-boot-rabbitmq</description>

    <packaging>pom</packaging>

    <modules>
        <module>direct-exchange</module>
        <module>fanout-exchange</module>
        <module>topic-exchange</module>
        <module>game-exchange</module>
        <module>dead-letter-queue</module>
        <module>delay-queue</module>
        <module>delay-queue2</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool.version}</version>
            </dependency>

            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>


</project>

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.chensir</groupId>
        <artifactId>spring-boot-rabbitmq</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>fanout-exchange</artifactId>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

 配置文件

server.port=8082

#host
spring.rabbitmq.host=121.40.100.52
#默认5672
spring.rabbitmq.port=5672
#用户名
spring.rabbitmq.username=guest
#密码
spring.rabbitmq.password=guest
#连接到代理时用的虚拟主机
spring.rabbitmq.virtual-host=/
#每个消费者每次可最大处理的nack消息数量 默认250个
spring.rabbitmq.listener.simple.prefetch=1
#表示消息确认方式,其有三种配置方式,分别是none、manual(手动)和auto(自动);默认auto
spring.rabbitmq.listener.simple.acknowledge-mode=auto
#监听重试是否可用
spring.rabbitmq.listener.simple.retry.enabled=true
#最大重试次数
#spring.rabbitmq.listener.simple.retry.max-attempts=5
#最大重试时间间隔
spring.rabbitmq.listener.simple.retry.max-interval=20000ms
#第一次和第二次尝试传递消息的时间间隔
spring.rabbitmq.listener.simple.retry.initial-interval=3000ms
#应用于上一重试间隔的乘数
spring.rabbitmq.listener.simple.retry.multiplier=2
#决定被拒绝的消息是否重新入队;默认是true(与参数acknowledge-mode有关系)
spring.rabbitmq.listener.simple.default-requeue-rejected=false

 config

package com.chensir.config;

import org.springframework.amqp.core.*;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.security.Key;

@Configuration
public class RabbitConfig {

    //解决对象类型乱码
    @Bean
    public Jackson2JsonMessageConverter messageConverter(){
        return new Jackson2JsonMessageConverter();
    }

    /**
     * 广播交换机(扇形交换机)
     * @return
     */
    @Bean
    public FanoutExchange fanoutExchange(){
//        DirectExchange directExchange=new DirectExchange("DirectExchange-01",true,false);
        FanoutExchange fanoutExchange = new FanoutExchange("FanoutExchange-01", true, false);
        return fanoutExchange;
    }

    /**
     * 队列a
     * @return
     */
    @Bean
    public Queue fanoutQueueA(){
        Queue queue = QueueBuilder.durable("FanoutQueue-01").build();
        return queue;
    }

    /**
     * 队列b
     * @return
     */
    @Bean
    public Queue fanoutQueueB(){
//        Queue queue=QueueBuilder.durable("DirectQueue-01").build();
        Queue queue = QueueBuilder.durable("FanoutQueue-02").build();
        return queue;
    }

    /**
     * 绑定
     * @return
     */
    @Bean
    public Binding bindingA() {
//        Binding binding=BindingBuilder.bind(directQueue()).to(directExchange).with("key-01");
        Binding binding = BindingBuilder.bind(fanoutQueueA()).to(fanoutExchange());
        return binding;
    }

    @Bean
    public Binding bindingB() {
//        Binding binding=BindingBuilder.bind(directQueue()).to(directExchange).with("key-01");
        Binding binding = BindingBuilder.bind(fanoutQueueB()).to(fanoutExchange());
        return binding;
    }

}

生产者

@Component
public class FanoutProvider {
    @Resource
    private RabbitTemplate rabbitTemplate;

    /**
     * 无需绑定routingkey
     */
    public void send(){
        for (int i = 0; i < 10; i++) {
            User user=new User();
            user.setId(i);
            user.setName("陈sir");
            user.setSex("男");
//            rabbitTemplate.convertAndSend("DirectExchange-01","key-01",user);
            rabbitTemplate.convertAndSend("FanoutExchange-01",null,user);
        }
    }

}

消费者

@Component
public class FanoutConsumer {

    @RabbitHandler
    @RabbitListener(queues = "FanoutQueue-01")
    public void processA(User user) {
        System.out.println("A 接受到消息,并正常处理结束"+ JSONUtil.toJsonStr(user));
    }

    @RabbitHandler
    @RabbitListener(queues = "FanoutQueue-02")
    public void processB(User user) {
        System.out.println("B 接受到消息,并正常处理结束"+ JSONUtil.toJsonStr(user));
    }
}

测试

 结果

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/939108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WordPress导航主题/酷啦鱼导航主题模板

酷啦鱼导航主题模板&#xff0c;是一款基于WordPress的导航主题&#xff0c;酷啦鱼导航主题是个人基于wordpresscodestar work框架设计的简洁导航主题。 下载地址&#xff1a;https://bbs.csdn.net/topics/616084697

当 Apache Doris 遇上大模型:探秘腾讯音乐如何基于大模型 + OLAP 构建智能数据服务平台

本文导读&#xff1a; 当前&#xff0c;大语言模型的应用正在全球范围内引发新一轮的技术革命与商业浪潮。腾讯音乐作为中国领先在线音乐娱乐平台&#xff0c;利用庞大用户群与多元场景的优势&#xff0c;持续探索大模型赛道的多元应用。本文将详细介绍腾讯音乐如何基于 Apach…

【大模型AIGC系列课程 3-2】国产开源大模型:ChatGLM

1. GLM https://arxiv.org/pdf/2103.10360.pdf GLM是General Language Model的缩写,是一种通用的语言模型预训练框架。它的主要目标是通过自回归的空白填充来进行预训练,以解决现有预训练框架在自然语言理解(NLU)、无条件生成和有条件生成等任务中表现不佳的问题。 具体来…

python conda实践 sanic框架gitee webhook实践

import subprocess import hmac import hashlib import base64 from sanic.response import text from sanic import Blueprint from git import Repo# 路由蓝图 hook_blue Blueprint(hook_blue)hook_blue.route(/hook/kaifa, methods["POST"]) async def kaifa(req…

【Java 中级】一文精通 Spring MVC - 数据格式化器(六)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

计算机毕设 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉

文章目录 0 简介1 二维码检测2 算法实现流程3 特征提取4 特征分类5 后处理6 代码实现5 最后 0 简介 今天学长向大家介绍一个机器视觉的毕设项目&#xff0c;二维码 / 条形码检测与识别 基于机器学习的二维码识别检测 - opencv 二维码 识别检测 机器视觉 1 二维码检测 物体检…

WordPress主题Zing V2.2.1/模块化WordPress响应式通用企业商城主题

WordPress主题Zing V2.2.1&#xff0c;模块化WordPress响应式通用企业商城主题。 功能介绍 百度熊掌号文章实时推送、原创保护 多设备支持自适应布局&#xff0c;支持电脑、Pad、手机以及各种浏览器 SEO优化首页、文章、页面、分类均支持自定义标题、关键字和描述 速度优化…

ios ipa包上传需要什么工具

目录 ios ipa包上传需要什么工具 前言 一、IPA包的原理 二、IPA包上传的步骤 1.注册开发者账号 2.apk软件制作工具创建应用程序 3.构建应用程序 4.生成证书和配置文件 5.打包IPA包 6.上传IPA包 三、总结 前言 iOS IPA包是iOS应用程序的安装包&#xff0c;可以通过iT…

高忆管理:美股盘中狂泻600点,美联储释放重磅信号!

隔夜美股商场&#xff0c;上演大跳水。 当地时间8月24日&#xff0c;美股三大指数团体大跳水&#xff0c;道指跌1.08%&#xff0c;纳指大跌1.87%&#xff0c;标普500指数跌1.35%。标普、纳指均创惠誉下调美国主权评级以来最差单日体现&#xff0c;道指盘中由最高34694点跌到了…

freertos之队列集

队列集就是队列的集合 队列集的长度所包含队列的长度之和 实验 创建两个队列和一个队列集&#xff0c;并把队列添加到队列集&#xff0c;创建3个任务&#xff0c;其中两个任务往队列存数据&#xff0c;另一个任务通过队列集来获取数据。 实验结果&#xff1a;

星云日记是什么?流量共享模式特点

星云日记是什么&#xff1f;流量共享&#xff0c;一键解决卖货难题 星云日记,即将来袭,竞拍抢购模式,一键转卖,24小时转卖成功 顾客共享&#xff0c;资源共享&#xff0c;利润共享无需找顾客&#xff0c;一键转卖24H结算&#xff0c;别光盯着大饼&#xff0c;先解决生活问题。…

微信签到抽奖活动策划指南,打造成功的营销活动

在如今竞争激烈的市场环境下&#xff0c;吸引用户参与活动成为了企业吸粉、增加品牌知名度的重要手段之一。签到抽奖活动作为一种简单而又有趣的方式&#xff0c;能够吸引更多用户的参与。那么&#xff0c;制作一个吸引人的签到抽奖活动需要几个步骤呢&#xff1f;下面我们一起…

聚观早报|闻泰科技上半年净利润12.58亿;馥逸医疗完成A轮融资

【聚观365】8月27日消息 闻泰科技2023上半年净利润12.58亿 馥逸医疗完成A轮融资 东方甄选转型直播电商成功 AI牙齿美白公司白里挑一完成千万元天使轮融资 特斯拉新款Model 3全面升级 闻泰科技上半年净利润12.58亿 闻泰科技发布2023年半年报。报告期内&#xff0c;闻泰科技…

img引入的svg图片,悬浮时怎么修改颜色?

实现效果&#xff1a;鼠标悬浮在这一行&#xff0c;让这行的文字和svg图片颜色发生变化。 因为是用img标签引入页面&#xff0c;使用fill属性是无效的。 css核心代码&#xff1a; &:active,&:hover {transform: scale(0.98);img{filter: drop-shadow(#409eff 50px 0);…

如何在一个有500台PC以上的局域网配置IP、子网掩码

上午好&#xff0c;我的网工朋友。 IP地址是一种在Internet上的给主机编址的方式&#xff0c;它是IP协议提供的一种统一的地址格式。 它为互联网上的每一个网络和每一台主机分配一个逻辑地址&#xff0c;以此来屏蔽物理地址的差异。 现在是互联网大行的时代&#xff0c;所以…

网络中的问题2

距离-向量算法的具体实现 每个routerY的路由表表项 involve<目的网络N&#xff0c;距离d&#xff0c;下一跳X> 对邻居X发来的报文,先把下一跳改为X,再把距离1,if original route table doesn’t involve N,add this item&#xff1b; else if original table’s relate…

No121.精选前端面试题,享受每天的挑战和学习

文章目录 1、flex布局2、position定位&#xff1a;fixed、relative和absoluted区别3、js数据类型&#xff0c;Symbol是什么、有什么用4、ES6新增哪些API5、TCP四次挥手6、localStorage和sessionStorage&#xff0c;存储大小7、跨域怎么解决&#xff08;开发环境和生成环境&…

开学数码产品必备好物,有什么值得买的数码产品推荐?

​又准备到了新学期开学季&#xff0c;很多新生都会选择在这个时候购买新装备。不过&#xff0c;种类繁多的数码产品很容易让人挑花了眼。今天来分享几款非常实用的数码好物给大家&#xff0c;让你的新学期焕然一新&#xff01; Top1&#xff1a;南卡00压蓝牙耳机 数码产品绝对…

灵明光子正式发布超高分辨率纯固态激光雷达SPAD芯片ADS6311

SPADIS面阵型ADS6311芯片 广泛适用于车载、机器人等纯固态激光雷达领域 作为SPAD dToF行业的一家领军级企业,灵明光子在2023年迎来了众多里程碑式的突破,获得包括成功通过AEC-Q102 Grade 1车规级认证,完成混合固态激光雷达接收端的SiPM芯片产能爬坡和量产出货,被国家工信部…

十人拼购消费全返,全民拼购模式

传统的消费模式已经满足不了消费者们的消费心理&#xff0c;企业要去琢磨大众的消费心理&#xff0c;对于消费者来说&#xff0c;实际性的购物是必须的&#xff0c;但是平台商家吸引的亮点莫过于就是消费返利&#xff0c;不少商城平台包括店面都存在这种消费返利的形式&#xf…