主题模式(Topic):

任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey中指定话题的Queue

1:简述

如上图所示

此类交换器使得来自不同的源头的消息可以到达一个对列,其实说的更明白一点就是模 糊匹配的意思,例如:上图中红色对列的routekey为usa.#,#代表匹配任意字符,但是 要想消息能到达此对列,usa.必须匹配后面的#好可以随意。图中usa.news usa.weather,都能找到红色队列,符号 # 匹配一个或多个词,符号 * 匹配不多不少一个 词。因此 usa.# 能够匹配到 usa.news.XXX ,但是 usa.* 只会匹配到 usa.XXX 。  注:  交换器说到底是一个名称与队列绑定的列表。当消息发布到交换器时,实际上是由你所 连接的信道,将消息路由键同交换器上绑定的列表进行比较,后路由消息。
任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey中指定话题的 Queue上
1.这种模式较为复杂,简单来说,就是每个队列都有其关心的主题,所有的消息都带有一 个“标题”(RouteKey),Exchange会将消息转发到所有关注主题能与RouteKey模糊匹配的 队列。
2.这种模式需要RouteKey,也许要提前绑定Exchange与Queue。
3.在进行绑定时,要提供一个该队列关心的主题,如“#.log.#”表示该队列关心所有涉及 log的消息(一个RouteKey为”MQ.log.error”的消息会被转发到该队列)。
4.“#”表示0个或若干个关键字,“”表示一个关键字。如“log.”能与“log.warn”匹配,无法 与“log.warn.timeout”匹配;但是“log.#”能与上述两者匹配。
5.同样,如果Exchange没有发现能够与RouteKey匹配的Queue,则会抛弃此消息 .

2:创建队列与绑定

(1):新建一个交换器,注意要与fanout模式区分开,类型选 topic,我们给这个新建的交换器取名wchtopic

(2):绑定交换器和队列,注意添加匹配规则

i:队列wchtest匹配以 wch.开头的routing key.

ii:队列test1匹配以 .test1结尾的routing key.

\

iii:队列test2 匹配routing key为 test2.log的。

添加绑定队列后的效果如下:

3:代码实现

代码参考:https://gitee.com/WChengHe/RabbitmqDemo.git

代码中pom文件、配置文件及启动类参考上一篇:https://blog.csdn.net/qq_22596931/article/details/89329024

测试类TopicTest.java代码:

package com.wch.demo.topic;import com.wch.demo.DemoApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
public class TopicTest {@Autowiredprivate RabbitTemplate rabbitTemplate;@Testpublic void testSendTopic1(){rabbitTemplate.convertAndSend("wchtopic","wch.key","这是wch.#规则的消息");}@Testpublic void testSendTopic2(){rabbitTemplate.convertAndSend("wchtopic","key.test1","这是#.test1规则的消息");}@Testpublic void testSendTopic3(){rabbitTemplate.convertAndSend("wchtopic","test2.log","这是test2.log规则的消息");}
}

运行效果:

源代码:https://gitee.com/WChengHe/RabbitmqDemo.git

RabbitMQ的三种模式-----主题模式(Topic)相关推荐

  1. RabbitMQ(八):SpringBoot 整合 RabbitMQ(三种消息确认机制以及消费端限流)

    说明 本文 SpringBoot 与 RabbitMQ 进行整合的时候,包含了三种消息的确认模式,如果查询详细的确认模式设置,请阅读:RabbitMQ的三种消息确认模式 同时消费端也采取了限流的措施, ...

  2. RabbitMQ六种队列模式-主题模式

    前言 RabbitMQ六种队列模式-简单队列 RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列模式-主题 ...

  3. VMware Workstation三种网络连接模式说明(Bridged,NAT,Host-only networking)

    VMware Workstation三种网络连接模式说明(Bridged,NAT,Host-only networking) VMware Workstation 提供 三种基本的网络连接 模式 : ...

  4. Redis三种集群模式介绍

    三种集群模式 redis有三种集群模式,其中主从是最常见的模式. Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性而演变出来的.哨兵顾名思义,就是用来监控的,主要作用就是 ...

  5. 简单区分Vmware的三种网络连接模式(bridged、NAT、host-only)

    from https://www.slyar.com/blog/vmware-bridged-nat-hostonly.html Vmware在安装时默认安装了两块虚拟网卡,VMnet1和VMnet8 ...

  6. STM32三种BOOT启动模式详解(全网最全)

    一.三种boot启动模式 一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存.用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式. ...

  7. redis 三种集群模式详解

    概念:redis有三种集群模式,分别为主从模式,哨兵模式以及集群模式,其中主从是最常见的模式 三种集群模式说明 **·**Sentinel 哨兵模式是为了弥补主从复制集群中主机宕机后,主备切换的复杂性 ...

  8. 032颜色的调配与三种屏显模式

    颜色的调配 色板面板和颜色面板,如图 拾色器,如图 三种屏显模式 如图  

  9. VMware虚拟机的三种网络连接模式的特点

    在VMware Workstation中创建虚拟机后,配置虚拟机的网络连接有3种模式,分别是: 1.桥接模式(VMnet0) 2.NAT模式(VMnet8) 3.仅主机模式(VMnet1) 这三种网络 ...

  10. 探究 STM32 的三种 BOOT(启动) 模式并实例验证

    目录 一.什么是 Boot 模式 二.实例验证 三.总结 四.参考资料 说明 STM32 的三种 Boot 模式的差异,并在之前第11-12周"C语言各种变量的存储地址"作业代码基 ...

最新文章

  1. muduo之channel
  2. python写appium测试用例找控件的方法总结
  3. Openfire配置过程,以及与php交互注意事项。
  4. XCTF-MISC-新手区:stegano
  5. oracle ebs mom,OracleEBS-OAF开发笔记
  6. python定义一个圆类_(python)创建一个可以比较的自定义类
  7. LeetCode 1752. 检查数组是否经排序和轮转得到
  8. 基于javaweb SSM邮件收发信息系统设计和实现以及文档
  9. VScode自动跳转到某一行代码
  10. Python源码剖析-深度探索动态语言核心技术
  11. html设置图片为黑白,CSS 将彩色图片转换成黑白图片
  12. 幻14 连不上无线网 网卡掉驱动
  13. 华为手机开启开发者模式
  14. 校园网络远程登录虚拟机Linux问题解决
  15. 我国4种托盘的标准尺寸,托盘高度一般多少
  16. Android中Notification的使用(一)
  17. python绘制一个时间的七段数码管实例基本的七段数码管绘制
  18. 红米k40和红米k40pro的区别 哪个好
  19. 电脑的远程控制是什么
  20. linux服务安装与配置(二):安装xinetd服务

热门文章

  1. 通俗易懂地讲解牛顿迭代法求开方
  2. 图片合成gif动画如何在线操作?怎样在线生成gif动画
  3. request 和 session 的区别联系
  4. 动态加载本地图片资源
  5. 本科生计算机网络期末复习笔记整理
  6. 百度天天快照知识宝典
  7. 【数据库系统】第三讲 关系模型的基本概念
  8. Clarifications
  9. 经典电影台词系列【5】——斯巴达克斯
  10. java 克隆对象_Java 中如何使用clone()方法克隆对象?