Topic交换器,即主题模式,进行规则匹配。

一、Provider

配置文件

1 spring.application.name=provider
2 spring.rabbitmq.host=192.168.50.30
3 spring.rabbitmq.port=5672
4 spring.rabbitmq.username=rabbit
5 spring.rabbitmq.password=rabbit
6 #设置交换器名称
7 mq.config.exchange=log.topic

代码

 1 public class UserSender {
 2     @Autowired
 3     private AmqpTemplate amqpTemplate;
 4
 5     @Value("${mq.config.exchange}")
 6     private String exchange;
 7
 8     public void send(String msg) {
 9         //交换器、路由键、消息
10         this.amqpTemplate.convertAndSend(this.exchange, "user.log.debug", msg);
11         this.amqpTemplate.convertAndSend(this.exchange, "user.log.info", msg);
12     }
13
14     public void send2(String msg) {
15         this.amqpTemplate.convertAndSend(this.exchange, "product.log.debug", msg);
16         this.amqpTemplate.convertAndSend(this.exchange, "product.log.info", msg);
17     }
18 }

二、Condumer

配置文件

 1 spring.appliction.name=consumer
 2 spring.rabbitmq.host=192.168.50.30
 3 spring.rabbitmq.port=5672
 4 spring.rabbitmq.username=rabbit
 5 spring.rabbitmq.password=rabbit
 6 #设置交换器名称
 7 mq.config.exchange=log.topic
 8 #info 队列名称
 9 mq.config.queue.info=log.info
10 #error 队列名称
11 mq.config.queue.error=log.error
12 #log 队列名称
13 mq.config.queue.logs=log.all

infoReceiver

 1 /**
 2     @RabbitListener bindings:绑定队列
 3     @QueueBinding value:绑定队列的名称
 4             exchange:配置交换器
 5     @Queue value:配置队列名称
 6             autoDelete:是否是一个可删除的临时队列
 7     @Exchange value:为交换器起个名称
 8             type:指定具体的交换器类型
 9 */
10 @Component
11 @RabbitListener(
12     bindings=@QueueBinding(
13         value=@Queue(
14             value="${mq.config.queue.info}",
15             autoDelete="true"
16         ),
17         exchange=@Exchange(
18             value="${mq.config.exchange}",
19             type=ExchangeTypes.TOPIC
20         ),
21         key="*.log.info"
22     )
23 )
24 public class InfoReceiver {
25     @RabbitHandler
26     public void process(String msg){
27         System.out.println(msg);
28     }
29 }

logsReceiver

 1 /**
 2     @RabbitListener bindings:绑定队列
 3     @QueueBinding value:绑定队列的名称
 4             exchange:配置交换器
 5     @Queue value:配置队列名称
 6             autoDelete:是否是一个可删除的临时队列
 7     @Exchange value:为交换器起个名称
 8             type:指定具体的交换器类型
 9 */
10 @Component
11 @RabbitListener(
12     bindings=@QueueBinding(
13         value=@Queue(
14             value="${mq.config.queue.logs}",
15             autoDelete="true"
16         ),
17         exchange=@Exchange(
18             value="${mq.config.exchange}",
19             type=ExchangeTypes.TOPIC
20         ),
21         key="*.log.*"
22     )
23 )
24 public class LogsReceiver {
25     @RabbitHandler
26     public void process(String msg){
27         System.out.println(msg);
28     }
29 }

转载于:https://www.cnblogs.com/guanghe/p/11026947.html

RabbitMQ之Topic交换器模式开发相关推荐

  1. RabbitMQ的Topics 通配符模式(Topic)

    RabbitMQ的Topics 通配符模式(Topic) 模式说明 Topic 类型与 Direct 相比,都是可以根据 RoutingKey 把消息路由到不同的队列.只不过 Topic 类型Exch ...

  2. (八)RabbitMQ消息队列-通过Topic主题模式分发消息

    前两章我们讲了RabbitMQ的direct模式和fanout模式,本章介绍topic主题模式的应用.如果对direct模式下通过routingkey来匹配消息的模式已经有一定了解那fanout也很好 ...

  3. RabbitMQ学习系列(五):routing路由模式和Topic主题模式

    (一)routing路由模式 在前面一篇博客中讲到了exchange的类型,其中direct类型的exchange就是用于routing路由模式.direct类型的交换机是指:交换机和队列绑定时会设置 ...

  4. RabbitMQ安装|使用|概念|Golang开发

    手册:http://www.rabbitmq.com/getstarted.html 安装:http://www.rabbitmq.com/download.html 参考:http://blog.c ...

  5. Rabbitmq专题:springboot如何整合Rabbitmq?Rabbitmq有哪些工作模式?

    文章目录 1. Rabbitmq的安装 2. Rabbitmq的基本概念 3. RabbitMQ的工作模式 3.1 "Hello World!" 简单模式 3.2 Work que ...

  6. Topic交换器-搭建环境

    我们再来看另一个交换器的使用,Topic交换器的使用,Topic交换器也称之为主题交换器,他的特点是什么呢,是根据这个规则来匹配,是一个什么样的规则呢,咱们先看这个图,这个图和上面最大的区别就是,我的 ...

  7. RabbitMQ五种工作模式

    RabbitMQ五种工作模式 1.简单队列 一个生产者对应一个消费者!! 2.work 模式 一个生产者对应多个消费者,但是一条消息只能有一个消费者获得消息!!! 轮询分发就是将消息队列中的消息,依次 ...

  8. 消息中间件的应用场景与 RabbitMQ的六种工作模式介绍

    消息中间件的应用场景与 RabbitMQ的六种工作模式介绍 消息中间件应用场景 异步处理 应用解耦 流量削峰 RabbitMQ的六种工作模式 简单模式 工作模式 发布订阅模式 路由模式 主题模式 PR ...

  9. Rabbitmq运用之fanout模式

    Rabbitmq运用之fanout模式 代码在文末无条件提供 rabiitmq 的 fanout 属于多播模式,他的工作图如下,应用场景挺多的.比如订单,客户下单后,会发送消息告诉客户下单成功,通知仓 ...

最新文章

  1. 鸿蒙系统低端机推行,华为正在考虑少量推行搭载鸿蒙系统的中低端手机,有望年底推出!...
  2. 【对讲机的那点事】公网对讲机选择物联网卡常见问题
  3. 软考下午题具体解释---数据流图设计
  4. Linux 源代码阅读知识点及要求
  5. 各大快递公司面单号准确性验证的正则表达式,来自淘宝开放平台,时间是20181206,...
  6. python安装教程-CentOS 8 Python 安装教程
  7. c语言中用分数表示结果,C语言实例 计算分数的精确值
  8. mysql 输入密码后闪退_iPhone抹除还原后需要输入账号密码怎么办?
  9. 图书馆管理系统代码html语言,图书管理系统html - WEB源码|源代码 - 源码中国
  10. sql智能语法提示插件 sql prompt 10
  11. 算法-贪心算法知识总结
  12. 微信网页开发 /JS-SDK说明文档
  13. 如何解决SQL2008r2 登录不上的问题
  14. 想学IT的必看!不断提升自己创造溢价的能力,附带学习经验
  15. Loadrunner事务与子事务函数简介
  16. 问题解决:Ubuntu18.04版本始终无法动态获取IP地址
  17. Derek Sivers:我是一个慢思考者(译)
  18. ps4模拟器linux,PS4模拟器PC版下载-Spine(PS4模拟器)v1.0 官方试用版-手机腾牛网
  19. python字母对应数字上海迪士尼残疾人门票_所有景点提供无障碍设施 残障人士也能玩转上海迪士尼...
  20. 怎么做才可以把电脑上的照片给做成视频?-markdown编辑器

热门文章

  1. 以数制转换问题讲解栈数据结构的基本概念及其在计算机中的应用
  2. 复制网站部分内容_这些网站帮你十分钟搞定年终报告/合同/公文/策划写作!
  3. python定时模块:apscheduler
  4. CENTOS利用Keepalived构建双主MySQL+双机热备
  5. 数据中心那些常见的问题
  6. IBM GTS部门或有重大调整,最快本周见分晓
  7. Java 获取两个日期之间的日期
  8. Asp.Net在SqlServer中的图片存取
  9. WORD的POI处理与原理
  10. Android开发工具集合