RabbitMQ的交换机(原理及代码实现)

1.交换机类型

  • Fanout Exchange(扇形)
  • Direct Exchange(直连)
  • opic Exchange(主题)
  • Headers Exchange(头部)

2.Fanout Exchange

2.1 简介

Fanout 扇形的,散开的; 扇形交换机

投递到所有绑定的队列,不需要路由键,不需要进行路由键的匹配,相当于广播、群发;
如下图所示
在这里插入图片描述
P代表provider提供者,X代表exchange交换机,第三部分代表队列

2.2 代码示例

2.2.1 扇形交换机与队列

定义交换机主要由3部分组成,

  • 1.定义交换机
  • 2.定义队列
  • 3.绑定交换机
@Configuration
public class RabbitConfig {//rabbitmq三部曲//1.定义交换机@Beanpublic FanoutExchange fanoutExchange(){return new FanoutExchange("exchange.fanout");}//2.定义队列//此处定义两个队列@Beanpublic Queue queueA(){return new Queue("queue.fanout.a");}@Beanpublic Queue queueB(){return new Queue("queue.fanout.b");}//3.绑定交换机@Beanpublic Binding bindingA(FanoutExchange fanoutExchange,Queue queueA){//将队列A绑定到扇形交换机return BindingBuilder.bind(queueA).to(fanoutExchange);}@Beanpublic Binding bindingB(FanoutExchange fanoutExchange,Queue queueB){//将队列A绑定到扇形交换机return BindingBuilder.bind(queueB).to(fanoutExchange);}
}

2.2.2 模拟provider发送消息

发送消息模拟

@Component
@Slf4j
public class MessageService {@Resourceprivate RabbitTemplate rabbitTemplate;public void senMsg(){//定义消息String msg="hello world";//发消息Message message= new Message(msg.getBytes());rabbitTemplate.convertAndSend("exchange.fanout","",message);log.info("消息发送完毕,发送时间为:{}", new Date());}
}

2.2.3 接受扇形交换机信息

3.Direct Exchange

根据路由路由键(Routing Key)精确匹配(一模一样)进行路由消息队列;
与扇形交换机不同的是,直连交换机必须要绑定key
在这里插入图片描述

3.2代码示例

@Configuration
public class RabbitConfig {//rabbitmq三部曲//1.定义交换机@Beanpublic DirectExchange directExchange(){return ExchangeBuilder.directExchange("exchange.direct").build();}//2.定义队列//此处定义两个队列@Beanpublic Queue queueA(){return new Queue("queue.direct.a");}@Beanpublic Queue queueB(){return new Queue("queue.direct.b");}//3.绑定交换机@Beanpublic Binding bindingA(DirectExchange directExchange,Queue queueA){//将队列A绑定到扇形交换机return BindingBuilder.bind(queueA).to(directExchange).with("error");}@Beanpublic Binding bindingB1(DirectExchange directExchange,Queue queueB){//将队列A绑定到扇形交换机return BindingBuilder.bind(queueB).to(directExchange).with("error");}@Beanpublic Binding bindingB2(DirectExchange directExchange,Queue queueB){//将队列A绑定到扇形交换机return BindingBuilder.bind(queueB).to(directExchange).with("info");}@Beanpublic Binding bindingB3(DirectExchange directExchange,Queue queueB){//将队列A绑定到扇形交换机return BindingBuilder.bind(queueB).to(directExchange).with("warning");}
}

4. Topic Exchange

通配符匹配,相当于模糊匹配;

#匹配多个单词,用来表示任意数量(零个或多个)单词
*匹配一个单词(必须有一个,而且只有一个),用.隔开的为一个单词

5.Headers Exchange

基于消息内容中的headers属性进行匹配;

用的比较少

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

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

相关文章

pve lxc debian 11安装docker遇到bash: sudo: command not解决办法

pve创建LXC容器,使用debian 11模版,安装完成后正常换源、安装依赖 然后添加Docker 的官方 GPG 密钥时出错: $ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add - 提示 bash: sudo: command not …

基于图像识别的自动驾驶汽车障碍物检测与避障算法研究

基于图像识别的自动驾驶汽车障碍物检测与避障算法研究是一个涉及计算机视觉、机器学习、人工智能和自动控制等多个领域的复杂问题。以下是对这个问题的研究内容和方向的一些概述。 障碍物检测 障碍物检测是自动驾驶汽车避障算法的核心部分,它需要从车辆的感知数据…

统计学习方法 决策树

文章目录 统计学习方法 决策树决策树模型与学习特征选择决策树的生成ID3 算法C4.5 的生成算法 决策树的剪枝CART 算法CART 回归树的生成CART 分类树的生成CART 剪枝 统计学习方法 决策树 阅读李航的《统计学习方法》时,关于决策树的笔记。 决策树模型与学习 决策…

git 删除远程标签tag【杂记】

分为两步: 1、删除本地tag git tag -d tag-name 2、删除远程tag git push origin :refs/tags/tag-name

java基础 特殊文件

1.Properties属性文件: 1.1使用Properties读取属性文件里的键值对数据: package specialFile;import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Enumeration; import java.util.Propert…

中电文思海辉:塑造全球AI能力,持续强化诸多行业战略

【科技明说 | 重磅专题】 中电文思海辉以前就是叫文思海辉, 这是由之前两家上市软件外包公司文思信息和海辉软件合并而来,2018年当时各自股票以1:1的比例进行整合,双方股东各持有新公司50%的股权,合并后新公司名称为文…

使用 Pyro 和 PyTorch 的贝叶斯神经网络

一、说明 构建图像分类器已成为新的“hello world”。还记得当你第一次接触 Python 时,你的打印“hello world”感觉很神奇吗?几个月前,当我按照PyTorch 官方教程并为自己构建了一个运行良好的简单分类器时,我也有同样的感觉。 我…

牛客网刷题-(7)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

算法通关村第三关|白银|双指针妙用【持续更新】

1.删除元素 1.1 原地删除等于 val 的元素 1.1.1 快慢双指针。 public int removeElement(int[] nums, int val) {int slow 0;for (int fast 0; fast < nums.length; fast) {if (nums[fast] ! val) {nums[slow] nums[fast];slow;}}return slow; }1.1.2 对撞双指针&…

嘴笨的技术人员怎么发言

对于嘴笨的人来说&#xff0c;即兴发言简直就是灾难&#xff0c;想想自己窘迫的模样&#xff0c;自己都受不了&#xff0c;但职场又避免不了这种场合&#xff0c;所以&#xff0c;就要靠一些技巧让我们顺利打开思路了。 那么&#xff0c;今天就分享几个解救过我的不同场景即兴发…

数据结构介绍与时间、空间复杂度

数据结构介绍 什么是数据结构&#xff1f;什么是算法&#xff1f;数据结构和算法的重要性 数据结构定义 数据结构是计算机科学中研究数据组织、存储和管理的一门学科。数据结构描述了数据对象之间的关系&#xff0c;以及对数据对象进行操作的方法和规则。 常见的数据结构 数…

解析G代码【C#】

下面是一个使用C#编写的解析G代码的示例方法&#xff1a; 下面是一个使用C#编写的解析G代码的示例方法&#xff1a;csharp using System; using System.Collections.Generic;public class GCodeParser {public static List<GCodeCommand> ParseGCode(string gcode){var …

网络原理之TCP/IP

文章目录 应用层传输层UDP协议TCP协议TCP 的工作机制1. 确认应答2. 超时重传3. 连接管理TCP 的建立连接的过程(三次握手),和断开连接的过程(四次挥手)TCP 断开连接, 四次挥手 3. 滑动窗口5. 流量控制6. 拥塞控制7. 延时应答8. 捎带应答9. 面向字节流10. 异常情况 本章节主要讨论…

【Python机器学习】零基础掌握SimpleImputer缺失值填充

如何处理数据集中的缺失值,以便更准确地进行数据分析或模型训练? 在数据分析和机器学习中,数据的完整性和准确性至关重要。但现实情况是,收集到的数据往往存在缺失值。例如,医疗研究中可能缺少某些患者的体重、年龄或血压等信息。这样的缺失值会对数据分析或模型训练产生…

vscode不显示横滚动条处理

最近发现vscode打开本地文件不显示水平的滚动条&#xff0c;但是打开一个临时文件是有水平滚动条的。 解决方案 可以一个个试 vscode配置 左下角设置–设置–搜索Scrollbar: Horizontal auto 自动visible 一直展示hidden 一直隐藏 拖动底部状态栏 发现是有的&#xff0c;但是…

国际腾讯云直播推流配置教程!

云直播的服务本质是一个广播的过程&#xff0c;类似于电视台的直播节目通过有线电视网发送给千家万户。为了完成这个过程&#xff0c;云直播需要有采集和推流设备&#xff08;类似摄像头&#xff09;、云直播服务&#xff08;类似电视台的有线电视网&#xff09;和播放设备&…

华为机试题:HJ3 明明的随机数

目录 第一章、算法题1.1&#xff09;题目描述1.2&#xff09;解题思路与答案1.3&#xff09;牛客链接 友情提醒: 先看文章目录&#xff0c;大致了解文章知识点结构&#xff0c;点击文章目录可直接跳转到文章指定位置。 第一章、算法题 1.1&#xff09;题目描述 题目描述&…

1818_ChibiOS的计数信号量

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 之前见过计数信号量&#xff0c;也是在FreeRTOS中看到的。也看到过这样的功能在驱动设计中的应用&#xff0c;但是当时没有理解这个使用的方式。 1.…

ChIP实验简介

ChIP实验简介 一、ChIP实验的作用 染色质免疫沉淀(ChIP)是研究体内蛋白质-DNA相互作用的一种有价值的方法&#xff0c;鉴定各种DNA相互作用蛋白(如转录因子和调节因子、修饰组蛋白和表观遗传修饰因子)的结合位点和模式是必不可少的。来自组织或培养细胞的交联(XChIP)或天然(NC…

由于找不到emp.dll无法继续执行此代码问题的五个解决方法

在玩游戏的过程中&#xff0c;我们常常会遇到一些错误提示&#xff0c;其中最常见的就是“找不到emp.dll”&#xff0c;这个问题我们的游戏无法启动运行。本文将分享我在解决这一问题过程中的方法&#xff0c;希望能对遇到类似问题的玩家有所帮助。 emp.dll是一个动态链接库文件…