当前位置: 首页 > news >正文

rabbitMQ的Topic模式的生产者与消费者使用案例

在这里插入图片描述

topic模式 RoutingKey 按照英文单词点号多拼接规则填充。其中消费者匹配规则时候 * 代表一个单词,#表示多个单词
消费者C1的RoutingKey 规则按照*.orange.* 匹配 绑定队列Q1
package com.esint.rabbitmq.work05;import com.esint.rabbitmq.RabbitMQUtils;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;public class ReceiveLogsTopic01 {public static final String EXCHANGE_NAME = "topic";public static void main(String[] args) throws Exception {Channel channel = RabbitMQUtils.getChannel();channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.TOPIC);String queueName = "Q1";channel.queueDeclare(queueName,false,false,false,null);channel.queueBind(queueName,EXCHANGE_NAME,"*.orange.*");System.out.println("Q1队列等待接受消息...");DeliverCallback deliverCallback = (deliverTag,mes)->{System.out.println("打印ReceiveLogsTopic01控制台消息:" + new String(mes.getBody(),"UTF-8"));System.out.println("接收队列:" + queueName + " 绑定键:" + mes.getEnvelope().getRoutingKey());};channel.basicConsume(queueName,true,deliverCallback,deliverTag->{});}}
消费者C2的RoutingKey 规则按照*.rabbit.* 和 lazy.# 匹配 绑定队列Q2
package com.esint.rabbitmq.work05;import com.esint.rabbitmq.RabbitMQUtils;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;public class ReceiveLogsTopic02 {public static final String EXCHANGE_NAME = "topic";public static void main(String[] args) throws Exception {Channel channel = RabbitMQUtils.getChannel();channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.TOPIC);String queueName = "Q2";channel.queueDeclare(queueName,false,false,false,null);channel.queueBind(queueName,EXCHANGE_NAME,"*.*.rabbit");channel.queueBind(queueName,EXCHANGE_NAME,"lazy.#");System.out.println("Q2队列等待接受消息...");DeliverCallback deliverCallback = (deliverTag,mes)->{System.out.println("打印ReceiveLogsTopic01控制台消息:" + new String(mes.getBody(),"UTF-8"));System.out.println("接收队列:" + queueName + " 绑定键:" + mes.getEnvelope().getRoutingKey());};channel.basicConsume(queueName,true,deliverCallback,deliverTag->{});}}
生产者顺序发送
        bindKeyMap.put("quick.orange.rabbit","Q1 Q2 catch【1】");bindKeyMap.put("lazy.orange.elep","Q1 Q2 【2】");bindKeyMap.put("quick.orange.fox","Q1【3】");bindKeyMap.put("lazy.brown.fox","Q2【4】");bindKeyMap.put("lazy.pink.rabbit","Q2 Q2【5】");bindKeyMap.put("quick.brown.fox","wu【6】");bindKeyMap.put("quick.orange.male.rabbit","wu【7】");bindKeyMap.put("lazy.orange.male.rabbit","Q2【8】");
package com.esint.rabbitmq.work05;import com.esint.rabbitmq.RabbitMQUtils;
import com.rabbitmq.client.Channel;import java.util.HashMap;
import java.util.Map;public class ProductLogs {public static final String EXCHANGE_NAME = "topic";public static void main(String[] args) throws Exception {Channel channel = RabbitMQUtils.getChannel();HashMap<String,String > bindKeyMap = new HashMap<>();bindKeyMap.put("quick.orange.rabbit","Q1 Q2 catch【1】");bindKeyMap.put("lazy.orange.elep","Q1 Q2 【2】");bindKeyMap.put("quick.orange.fox","Q1【3】");bindKeyMap.put("lazy.brown.fox","Q2【4】");bindKeyMap.put("lazy.pink.rabbit","Q2 Q2【5】");bindKeyMap.put("quick.brown.fox","wu【6】");bindKeyMap.put("quick.orange.male.rabbit","wu【7】");bindKeyMap.put("lazy.orange.male.rabbit","Q2【8】");for (Map.Entry<String, String> bindingKeyEntry : bindKeyMap.entrySet()) {String key = bindingKeyEntry.getKey();String value = bindingKeyEntry.getValue();channel.basicPublish(EXCHANGE_NAME,key,null,value.getBytes("UTF-8"));System.out.println("生产者发消息:"+ value);}}
}
运行消费者1 消费者2,执行生产者:

生产者:
在这里插入图片描述
消费者1:
在这里插入图片描述
消费者2:
在这里插入图片描述

相关文章:

rabbitMQ的Topic模式的生产者与消费者使用案例

topic模式 RoutingKey 按照英文单词点号多拼接规则填充。其中消费者匹配规则时候 * 代表一个单词&#xff0c;#表示多个单词 消费者C1的RoutingKey 规则按照*.orange.* 匹配 绑定队列Q1 package com.esint.rabbitmq.work05;import com.esint.rabbitmq.RabbitMQUtils; import …...

【软考篇】中级软件设计师 第五部分

中级软件设计师 第五部分 三十六. 下午题变动题型参考答案例题一 如何保持数据流图平衡例题二 结构化语言例题三 关系模式例题四 用例关系内涵例题五 观察者模式 三十七&#xff1a;下午题第四题往年算法部分参考答案 读前须知&#xff1a; 【软考篇】中级软件设计师 学前须知 …...

论文阅读——RetNet

transformer的问题&#xff1a;计算量大&#xff0c;占用内存大&#xff0c;不好部署。 所以大家在找能解决办法&#xff0c;既能和transformer表现一样好&#xff0c;又能在推理阶段计算复杂度很低。 这些方法大概分类三类&#xff1a;一是代替transformer非线性注意力机制的…...

【Proteus仿真】【51单片机】锂电池管理系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用LCD1602显示模块、DS18B20温度传感器、PCF8691 ADC模块、按键、LED蜂鸣器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示温度…...

【工具使用-VScode】设置 VSCode 的自动保存功能

要设置 VSCode 的自动保存功能&#xff0c;请按照以下步骤进行操作&#xff1a; 打开 VSCode 编辑器。在顶部菜单中选择 “文件&#xff08;File&#xff09;”。选择 “首选项&#xff08;Preferences&#xff09;”。在下拉菜单中选择 “设置&#xff08;Settings&#xff0…...

常用Git命令记录

持续补充… git add&#xff1a;提交到暂存区git remote add <remote_name> <remote_url> : 添加一个新的远程仓库。指定一个远程仓库的名称和 URL&#xff0c;将其添加到当前仓库中。git commit&#xff1a;暂存区提交到本地仓库&#xff1b;-m&#xff1a;添加日…...

Go语言常用库

Go语言常用库 文本主要介绍Go常用的一些系统库&#xff1a; sort、math、copy、strconv、crypto 1、sort package mainimport ("fmt""sort" )// sort // int排序 // sort.Ints([]int{}) // 字符串排序 // sort.Strings([]string{}) // 自定义排序 // s…...

二叉树(进阶)

文章目录 1.内容安排说明2. 二叉搜索树2.1二叉搜索树的概念2.2二叉搜索树的实现2.3二叉树的性能&#xff1a; 搜索二叉树的应用k 模型kv模型 1.内容安排说明 二叉树在前面c数据结构阶段&#xff1b;已经讲过了&#xff1b;本节取名二叉树进阶的原因是&#xff1a; 1.map和set特…...

Flink之OperatorState

在Flink中状态主要分为三种: Operator State(算子状态)Keyed State(键控状态)Broadcast State(广播状态) 这里简单介绍一下Operator State的使用,说到使用State就必然要使用到Flink的容错机制也就是Checkpoint.具体内容见代码注解 数据源 这里选用Socket作为Source输入,便于…...

Python集成学习和随机森林算法

大家好&#xff0c;机器学习模型已经成为多个行业决策过程中的重要组成部分&#xff0c;然而在处理嘈杂或多样化的数据集时&#xff0c;它们往往会遇到困难&#xff0c;这就是集成学习&#xff08;Ensemble Learning&#xff09;发挥作用的地方。 本文将揭示集成学习的奥秘&am…...

代码随想录算法训练营第二十四天| 77 组合

目录 77 组合 暴力 减枝优化 77 组合 暴力 class Solution {List<List<Integer>>res new ArrayList<>();LinkedList<Integer>newList new LinkedList<>();public List<List<Integer>> combine(int n, int k) {dfs(n,k,1);r…...

el-dialog element-ui弹窗

bulkImport.vue 自定义组件 <template> <el-dialog :visible"modalVisible" title"批量导入" centered close"$emit(close)" :fullscreen"true"> <span>弹窗内容</span> <span slot"foot…...

计算机网络的发展

目录 一、计算机网络发展的四个阶段 1、第一阶段&#xff1a;面向终端的计算机网络&#xff08;20世纪50年代&#xff09; 2、第二阶段&#xff1a;计算机—计算机网络&#xff08;20世纪60年代&#xff09; 3、第三阶段&#xff1a;开放式标准化网络&#xff08;20世纪70年…...

官宣!Wayland正式支持基于IntelliJ的IDE

对于基于IntelliJ IDE的Linux用户来说&#xff0c;一项令人期待的进步即将到来 – 对 Wayland 显示服务器协议的支持。 这项更新将带来许多好处&#xff0c;包括解决古老的分数缩放问题以及在与适用于 Linux 的 Windows 子系统 (WSLg)&#xff08;在底层运行 Wayland 服务器&am…...

大模型在数据分析场景下的能力评测|进阶篇

做数据分析&#xff0c;什么大模型比较合适&#xff1f; 如何调优大模型&#xff0c;来更好地做数据计算和洞察分析&#xff1f; 如何降低整体成本&#xff0c;同时保障分析体验&#xff1f;10月25日&#xff0c;我们发布了数据分析场景下的大模型能力评测框架&#xff08;点击…...

服务注册发现 springcloud netflix eureka

文章目录 前言角色&#xff08;三个&#xff09; 工程说明基础运行环境工程目录说明启动顺序&#xff08;建议&#xff09;&#xff1a;运行效果注册与发现中心服务消费者&#xff1a; 代码说明服务注册中心&#xff08;Register Service&#xff09;服务提供者&#xff08;Pro…...

Spring cloud负载均衡@LoadBalanced LoadBalancerClient

LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

6.运行mysql容器-理解容器数据卷

运行mysql容器-理解容器数据卷 1.什么是容器数据卷2.如何使用容器数据卷2.1 数据卷挂载命令2.2 容器数据卷的继承2.3 数据卷的读写权限2.4 容器数据卷的小实验&#xff08;加深理解&#xff09;2.4.1 启动挂载数据卷的centos容器2.4.2 启动后&#xff0c;在宿主机的data目录下会…...

golang学习笔记——查找质数

查找质数 编写一个程序来查找小于 20 的所有质数。 质数是大于 1 的任意数字&#xff0c;只能被它自己和 1 整除。 “整除”表示经过除法运算后没有余数。 与大多数编程语言一样&#xff0c;Go 还提供了一种方法来检查除法运算是否产生余数。 我们可以使用模数 %&#xff08;百…...

C++ 基础二

文章目录 四、流程控制语句4.1 选择结构4.1.1 if语句 4.1.2 三目运算符4.1.3 switch语句注意事项 4.1.4 if和switch的区别【CHAT】4.2 循环结构4.2.1 while循环语句4.2.2 do...while循环语句 4.2.3 for循环语句九九乘法表 4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 …...

Telnet与SSH协议本质区别:从TCP连接到会话安全的底层解析

1. 为什么今天还在聊Telnet和SSH&#xff1f;一个被低估的“连接底层”分水岭 很多人以为Telnet和SSH只是“老古董协议”和“新标准协议”的简单替换关系&#xff0c;甚至觉得“现在谁还用Telnet&#xff1f;直接上SSH不就完了&#xff1f;”——这种认知在日常运维中看似无害&…...

红外图像识别 遥感图像检测 yolo11红外小目标检测与红外无人机视角行人和车辆检测

文章目录YOLOv11 红外小目标检测与红外无人机视角行人/车辆检测流程一、引言二、YOLOv11 原理概述2.1 模型架构2.2 工作流程三、数据准备与格式转化3.1 数据收集3.2 标注工具选择3.3 数据集划分3.4 格式转化四、模型训练4.1 环境搭建4.2 配置文件调整4.3 开始训练五、模型评估与…...

机器学习势函数结合DFT:揭示缺陷如何降低半赫斯勒化合物晶格热导率

1. 项目概述与核心问题在热电材料的研究领域&#xff0c;半赫斯勒化合物一直是个“明星选手”&#xff0c;它们拥有不错的电学性能&#xff0c;但一个长期困扰研究者的难题是&#xff1a;理论计算出的晶格热导率总是比实验测量值高出一大截。这可不是个小问题&#xff0c;晶格热…...

JWT签名机制与常见攻击实战:从PortSwigger靶场12关学透算法混淆、密钥混淆与JWKS劫持

1. 为什么JWT不是“加密令牌”&#xff0c;而是“签名凭证”——从PortSwigger靶场第一关开始讲起很多人一看到JWT就下意识觉得&#xff1a;“这是个加密的token&#xff0c;只要我拿到它&#xff0c;就等于拿到了用户密码或者敏感密钥。”这种误解直接导致他们在实战中反复碰壁…...

为ClaudeCode配置Taotoken作为备用API解决访问限制

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为ClaudeCode配置Taotoken作为备用API解决访问限制 基础教程类&#xff0c;指导经常遇到ClaudeCode访问限制的开发者&#xff0c;如…...

基于改进粒子群算法的混合储能系统容量优化附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。&#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f3…...

深度学习的缺失数据革命:使用MIDAS实现高效多重插补

深度学习的缺失数据革命&#xff1a;使用MIDAS实现高效多重插补 【免费下载链接】MIDAS Multiple imputation utilising denoising autoencoder for approximate Bayesian inference 项目地址: https://gitcode.com/gh_mirrors/midas3/MIDAS 在数据科学和机器学习领域&a…...

UNT413A刷机后体验:开机无广告、流畅度飙升,这波操作值不值?

UNT413A刷机实战&#xff1a;从广告轰炸到极简流畅的蜕变之旅 每次打开电视盒子&#xff0c;那段无法跳过的30秒广告就像一场无法避免的仪式。更糟的是&#xff0c;系统卡顿得像是被胶水黏住&#xff0c;预装软件占据了宝贵的存储空间&#xff0c;而官方更新只会让情况变得更糟…...

告别报错!手把手教你用Pycharm 2023.2 + Git搞定Manim社区版安装(附国内镜像源配置)

Manim社区版极速安装指南&#xff1a;PyCharm 2023.2与Git的完美协作方案 当数学可视化遇上Python开发神器PyCharm&#xff0c;Manim社区版的安装过程却常常成为新手的第一道门槛。不同于常规教程的线性步骤&#xff0c;我们将以"问题-解决"为主线&#xff0c;直击两…...

HS2-HF Patch终极指南:一键解锁完整汉化与去码体验

HS2-HF Patch终极指南&#xff1a;一键解锁完整汉化与去码体验 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为《Honey Select 2》的语言障碍和功能限制而…...