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

SpringAMQP 发布订阅-TopicExchange

根据这个模型编写代码:

    @RabbitListener(bindings = @QueueBinding(value = @Queue(name = "topic.queue1"),exchange = @Exchange(name = "itcast.topic",type = ExchangeTypes.TOPIC),key = {"china.#"}))public void listenTopicQueue1(String msg){System.out.println("从topic.queue1中获取到了消息:"+msg);}@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "topic.queue2"),exchange = @Exchange(name = "itcast.topic",type = ExchangeTypes.TOPIC),key = {"#.news"}))public void listenTopicQueue2(String msg){System.err.println("从topic.queue2中获取到了消息:"+msg);}

pulsher发送消息代码:

@Testpublic void testTopicExchangeSend() {//发送消息String DirectChangeName = "itcast.topic";//交换机的名字String msg = "这里是天气预报";rabbitTemplate.convertAndSend(DirectChangeName, "weather.news", msg);}

用@RabbitListener注解实现交换机和队列的绑定以及BingingKey的设置,TopicExchange的特点就是可以用正则表达式匹配,可以看到队列1的RoutingKey China.# 的意思接收消息的前提是china.开头。#.news 的意思是该队列接收消息的前提是以 .news结尾。

 这里看我发送消息的RoutingKey是china.news 这两个队列都满足了请求 所有都接收到了

这里看我改了一下 第二个队列不匹配 所以就没接收到消息

这里的末尾是news  只有第二个队列匹配到了 所以第二个队列接收。

http://www.lryc.cn/news/348510.html

相关文章:

  • uniapp h5 配置代理服务器
  • 使用Apache Spark从MySQL到Kafka再到HDFS的数据转移
  • 一篇文章拿下Redis 通用命令
  • 锂电池充电充放电曲线分析
  • vue3 第二十九节 (vue3 事件循环之nextTick)
  • 使用Flask-SocketIO构建实时Web应用
  • 可重构柔性装配产线:为工业制造领域注入了新的活力
  • 懒人网址导航源码v3.9
  • springboot 开启缓存 @EnableCaching(使用redis)
  • Adobe After Effects AE v24.3.0 解锁版 (视频合成及视频特效制作)
  • Qt---文件系统
  • ruoyi-vue-pro 使用记录(2)
  • centos7中如何全局搜索一下nginx的配置文件?
  • 2024年5月10日有感复盘
  • C++通过json文件配置参数
  • idea连接远程仓库
  • 初始Django
  • leetcode56--合并区间
  • 赋能数据库智能托管,Akamai 发布首款云计算业务线产品!
  • Go语言系统学习笔记(三):杂项篇
  • 黄仁勋炉边对话:创业的超能力与英伟达的加速计算之旅
  • .NET开源、功能强大、跨平台的图表库LiveChart2
  • 疯狂学英语
  • LeetCode //C - 93. Restore IP Addresses
  • 【数据结构】栈和队列OJ面试题
  • 【联邦学习——手动搭建简易联邦学习】
  • Springboot项目如何创建单元测试
  • Win10 如何同时保留两个CUDA版本并自由切换使用
  • 实验室纳新宣讲会(java后端)
  • class常量池、运行时常量池和字符串常量池的关系