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

RabbitMQ:SpringAMQP Topic Exchange(主题交换机)

目录

  • 一、案例需求
  • 二、基础配置
  • 三、代码实现


TopicExchange与DirectExchange类似,区别在于RoutingKey可以是多个单次的列表,并且以.分割。

Queue与Exchange指定BindingKey时可以使用通配符:

  • #:代指0个或多个单词。
  • *:代指一个单词。

生产者源码
消费者源码

一、案例需求

  1. 在RabbitMQ控制台中,声明队列topic.queue1topic.queue2
  2. 在RabbitMQ控制台中,声明交换机mt.topic,将两个队列与其绑定。
  3. 在生产者服务中,利用不同的RoutingKeymt.topic交换机发送消息。
  4. 在消费者服务中,编写两个消费者,分别监听队列topic.queue1topic.queue2

在这里插入图片描述

二、基础配置

首先创建两个队列topic.queue1topic.queue2
在这里插入图片描述
创建一个主题交换机mt.topic,需要注意的是,在创建交换机的时候需要修改交换机的类型topic主题交换机
在这里插入图片描述
交换机创建之后,点击交换机的名称,绑定交换机与队列之间的关系。

在这里插入图片描述

三、代码实现

生产者

/*** 给交换机发送消息(主题交换机)* @throws InterruptedException*/
@Test
public void topicExchangeTest() throws InterruptedException {String exchangeName = "mt.topic";String message = "黄色警报 ......";
//        rabbitTemplate.convertAndSend(exchangeName, "china.news", message);
//        rabbitTemplate.convertAndSend(exchangeName, "japan.news", message);rabbitTemplate.convertAndSend(exchangeName, "china.weather", message);
}

消费者

@RabbitListener(queues = "topic.queue1")
public void listenTopicQueue1(String message) throws InterruptedException {System.out.println(String.format("消费者1,收到了topic.queue1: %s", message));
}@RabbitListener(queues = "topic.queue2")
public void listenTopicQueue2(String message) throws InterruptedException {System.err.println(String.format("消费者2,收到了topic.queue2: %s", message));
}

在这里插入图片描述

http://www.dtcms.com/a/340178.html

相关文章:

  • Flink双流join
  • 【黑客技术零基础入门】PHP环境搭建、安装Apache、安装与配置MySQL(非常详细)零基础入门到精通,收藏这一篇就够
  • (认识异常)
  • 建模工具Sparx EA的多视图协作教程
  • [系统架构设计师]面向服务架构设计理论与实践(十五)
  • Shader学习路线
  • C++ MFC/BCG编程:文件对话框(CFileDialog、CFolderPickerDialog)
  • 【免费AI文档助手开发实战系列】基于正则表达式的PDF脱敏python服务构建(一)
  • 国产化PDF处理控件Spire.PDF教程:如何使用 Python 添加水印到 PDF
  • 太阳光模拟器在无人机老化测试中的应用
  • JVM参数优化
  • Nacos-8--分析一下nacos中的AP和CP模式
  • InfoNES模拟器HarmonyOS移植指南
  • SpringAI接入openAI配置出现的问题全解析
  • hadoop技术栈(九)Hbase替代方案
  • 深入理解计算机系统
  • 9-302 家里网能搜出两个ip, 无法联大堂监控室
  • LangChain —多模态 / 多源上下文管理
  • 银河麒麟V10一键安装Oracle 11g脚本分享
  • 【运维进阶】管理大项目
  • Linux数据库:【索引】
  • 如何成功初始化一个模块
  • 第4章 React状态管理基础
  • TDengine IDMP 运维指南(4. 使用 Docker 部署)
  • LWIP的IP 协议栈
  • C#传参调用外部exe
  • FACE 与 AUTOSAR 架构比较研究:本质异同分析
  • Huggingface-Qwen2-blog学习
  • Ubuntu 下面安装搜狗输入法debug记录
  • git 常用操作