路由模式 根据routingKey有选择性的接收消息 特点 每个队列根据不同routingKey绑定交换机 消息发送到交换机后通过routingKey发送给特定的队列,然后传到消费者消费。...主题模式 基于某个主题接收消息 特点 路由模式发送的消息,是需要指定固定的routingKey,如果想要针对一类路由。比如: 只接收以.com 结尾的消息。 www.开头的消息。...主题模式就派上场了,路由模式和主题模式类似,路由模式是设置特定的routingKey绑定唯一的队列,而主题模式的是使用通配符匹配一个或者多个队列。...Topic Exchange(主题) 主题模式是将路由键根据一个主题进行分类,和直连模式不同的是,直连模式绑定特定的路由键,而主题模式使用通配符绑定路由键,绑定键有两种: * 表示可以匹配仅一个。...工作模式 多个消费端公平竞争同一个消息。 发布订阅模式 一次向多个消费者发送消息。 路由模式 根据特定的路由键转发消息。 主题模式 根据通配符,匹配路由键转发消息。
路由模式: direct类型的交换机。 Topic:主题(通配符) 把消息交给符合routing pattern(路由模式)的队列. 将路由键和某模式进⾏匹配。此时队列需要绑定要⼀个模式上。...主题模式(通配符模式):topic类型的交换机。...)消息的发送⽅在向 Exchange发送消息时,也必须指定消息的RoutingKey。...图解: P:⽣产者:向Exchange发送消息,发送消息时,会指定⼀个routing key。...==inserKey==64 5、Topics通配符模式(主题模式) 5.1 简介 Topic 类型与 Direct 相⽐,都是可以根据RoutingKey把消息路由到不同的队列。
发布订阅模式 什么是主题模式 主题模式与路由键模式类似,都是可以根据 RoutingKey把消息路由到不同的队列中,只不过主题模式的交换机可以让队列在绑定RoutingKey的时候使用通配符,前面我们所了解到的...Topic通配符模式,其实也可以称之为模糊匹配路由键模式,类似于SQL中的 "=" 和 "like" 的区别,那么通配符的规则分为两种 "*" 和 "#" "*": *号代表只能匹配任意一个单词,例如:...如上图举例说明: 在这个例子中,我们将发送描述动物的消息。这些消息的路由关键字由三个单词(两个点)组成。...,这是因为我的有一条消息发送email队列路由key不匹配原因导致的,主要测试主题模式的模糊匹配机制哈。...2、需要设置类型为 topic 的交换机,交换机和队列进行绑定,并且指定通配符方式的 routing key,当发送消息到交换机后,交换机会根据 routing key 将消息发送到对应的队列。
key 与 binding的routing key 符合通配符匹配的话,消息将会路由到该队列上; Headers:如果 消息参数表中的头信息和值 都与 bingding参数表中 相匹配,消息将会路由到该队列上...JMS的API协议能够确保所有的实现都能通过通用的API来使用,但是并不能保证某个JMS实现所发送的消息能够被另外不同的JMS实现所使用。...3、由于Exchange 提供的路由算法,AMQP可以提供多样化的路由方式来传递消息到消息队列,而 JMS 仅支持 队列 和 主题/订阅 方式两种。 ...4、发送和接收消息 还是Spring的那一套,Spring 为我们提供了一个模板 bean(rabbitTemplate) 来发送和接收消息。...和 header 路由方式 发送和接收消息。
Direct Exchange(直连交换机) 含义: Direct Exchange 是一种简单的消息路由模式。在这个模式下,消息的路由键与绑定时指定的路由键完全匹配,消息才会被发送到相应的队列。...Topic Exchange(主题交换机) 含义: Topic Exchange 允许队列通过通配符匹配的方式来绑定 Routing Key,更灵活地进行消息过滤。...生产者将消息发送到主题交换机,同时指定一个与消息相关的 Routing Key。 比喻: 想象你有一个新闻站,用户可以根据自己的兴趣订阅不同的主题。...生产者在发送消息时可以设置消息头的键值对,消费者在绑定队列时指定一组键值对。 比喻: 想象你有一个私人飞机,只有在天气晴朗的情况下才会飞行。...当消息发送到 Exchange 时,会根据 Routing Key 直接路由到与之同名的队列。 比喻: 想象你有一个小邮局,每个邮箱的名字就是收信人的名字。
; // 发送消息到队列 rabbitTemplate.convertAndSend(queueName, message); return "消息发送成功...Topic(主题型 ):通过路由键通配符(* 匹配一个单词、# 匹配多个单词 )模糊匹配,实现更灵活的路由。 五、各交换机特性 1....Topic 交换机 特性:支持路由键通配符(如 order.# 匹配 order.create、order.pay.success 等 ),灵活适配多条件路由。...示例:商城日志系统,按 服务名.日志级别 路由(如 user-service.error 消息,仅“用户服务错误日志”队列消费 )。 六、特殊队列特性 1....日志与监控: 各服务日志发往 Topic 交换机,按 服务名.日志级别 路由到不同日志队列,集中分析。
消息只有唯一的发送者和接受者,但并不是说只能有一个接收者 发布订阅式: 发送者(发布者)发送消息到主题,多个接受者(订阅者)监听(订阅) 这个主题,那么就会发布到达同时收到消息。...Publisher 消息的生产者,也是一个向交换器发布消息的客户端应用程序。...Exchange 交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列。 Queue 消息队列,用来保存消息直到发送给消费者。 Binding 绑定,用于消息队列和交换器之间的关联。...Topic Echange 20201001110719.png topic 交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上。...它将路由键和绑定键的字符串切分成单词,这些单词之间用点隔开。它同样也会识别两个通配符:符号“#”和符号“*” 。 #匹配 0 个或多个单词, *匹配一个单词。
灵活的路由策略: 在消息进入队列之前,通过 Exchange 来路由消息,对于典型的路由功能,RabbitMQ 已经提供了一些内置的 Exchange 来实现。...2.2.1.3 topic类型转发 topic的意思是主题,topic类型的Exchange会根据通配符对Routing key进行匹配,只要Routing key满足某个通配符的条件,...然后我们向该Exchange中发送一条消息,消息的Routing key为:USER.ABC.ORDER。...进入这个QUEUE,通过getMessage取出消息查看,确实是我们刚才手动发送的那条消息。...("direstTest","error","发送error的key的路由消息"); } 3.5 Topics主题模型 topicExchange与directExchange类型,区别在于
,消息代理保证消息传递到指定目的地 消息队列主要有两种形式的目的地: 队列(queue)-主题(topic) 队列(queue): 点对点消息通信(point-to-point) 点对点式: 消息发送者发送消息...,消息代理将消息放入一个队列中,消息接收者从队列中获取消息内容,消息读取后被移除队列 消息只有唯一的发送者和接受者,但不是说只有一个接收者 主题(topic): 发布(publish)-订阅(subscribe...) 消息通信 发布订阅式: 发送者(发布者) 发送消息到主题,多个接收者(订阅者)监听(订阅)这个主题,那么就会在消息到达时同时收到消息 JMS(Java Message Service) Java...Publisher: 消息生产者,向交换器发布消息的客户端应用程序 Exchange: 交换器 用来接收生产者发送的消息并将这些消息根据路由键(routing-key)通过路由规则给服务器中的队列...fanout类型转发消息是最快的,广播模式 Topic Exchange: topic交换器通过模式匹配分配消息的路由键属性,将路由键和某个模式进行匹配,队列需要绑定到一个模式上 将路由键和绑定键的字符串切分成单词
在Direct模型下,队列与交换机的绑定,不能是任意绑定了,而是要指定一个RoutingKey(路由key).消息的发送方在向Exchange发送消息时,也必须指定消息的routing key。...3.P:生产者,向Exchange发送消息,发送消息时,会指定一个routing key。...相比,都是可以根据RoutingKey把消息路由到不同的队列。...String message = "hello啊,我是mq,我发送的是简单队列模型"; //3.发送消息 rabbitTemplate.convertAndSend...100); } 发布者: /** * * @author dlwlrma * @date 2024/6/17 20:24 * TODO:workQueue 向队列中不停发送消息
下面开始通过代码实现: 图如下: 1、先建立模块化工程,模拟分布式,调用A服务接口,接口向RabbitMQ发送消息,B服务再去处理消息,减小A服务的服务器压力(模块化工程创建前面章节有讲到)。...4、修改provider服务的配置类,上面已经修改了 5、在provider服务新增一个controller类 相比上面的同步执行改库——发送消息——发送邮件,删除后面两步,引入rabbitTemplate...,调用他的convertAndSend方法向交换机发送消息,使用常量里设置的交换机的值,和路由键的值。...路由键是6种模式中路由模式和主题模式所特有,而路由模式是绝对匹配,而主题模式是通配符匹配,此处讲讲通配符匹配规则: 通配符有#和* #:可以匹配任意个数的元素 *:只能匹配一个元素 举例:#X*,可以匹配...创建一个交换机和两个队列(分别处理短信业务和邮件业务),并新建两个绑定关系,分别绑定两个通配符路由键,通过规则只要能匹配上生产者发送到交换机时配置的路由键,该队列即可获取到该交换机上面的消息。
2.灵活的路由(Flexible Routing) 在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ 已经提供了一些内置的 Exchange 来实现。...在这种交换机下,队列和交换机的绑定会定义一种路由模式,那么,通配符就要在这种路由模式和路由键之间匹配后交换机才能转发消息。 在这种交换机模式下: 路由键必须是一串字符,用句号(.)...-Direct:定向,把消息交给符合指定 rotingKey 的队列 订阅模型-Topic 主题模式:通配符,把消息交给符合routing pattern(路由模式) 的队列 首先打开abbitmq...Topic Exchange(主题模式,通配符模式): 同一个消息被多个消费者获取。...在Direct模型下: 队列与交换机的绑定,不能是任意绑定了,而是要指定一个RoutingKey(路由key) 消息的发送方在 向 Exchange发送消息时,也必须指定消息的 RoutingKey。
点击上方蓝字关注我们 文末有惊喜 介绍 安装 相关组件 五种模式调用示例 简单消息模式 工作队列模式 Publish/Subscribe发布与订阅模式 Routing路由模式 Topics主题模式...在这里插入图片描述 生产者: 是消息的产生者 消费者:消息的处理者 交换机(exchange):生产者和队列的桥梁,生产者发出的消息通过交换机传到队列 队列:消息保存的地方,等待消费者来获取 主机:所有的队列和交换机都是挂在主机上的...queue_test_fanout_mode_2:" + new String(message.getBody())); } } Routing路由模式 路由模式 是通过使用定向交换机进行转发消息...这里发送消息的时候指定了routingkey为order,那么只有当与交换机绑定的队列中设置了routingkey为order的才能监听到消息,这里消息会发送到queue_test_routing_mode...唯一不同的是解析routingkey的时候,定向交换机会根据消息中的routingkey找到对应的队列,这个值是确定的;但是topic模式又称为通配符模式,这个在绑定的时候指定的routingkey是可以以通配符的形式存在的
: work..."); return "发送成功"; } } 在运行程序之后,队列不会被立马创建出来 需要发送消息之后才会被创建 消费者代码 消费者是通过实现一个监听类...,来监听有没有消息 采用一个注解—— @RabbitListener @RabbitListener 是 Spring 框架中用于监听 RabbitMQ 队列的注解,通过使用这个注解,可以定义一个方法...Routing Key 的队列(Routing 模式) Topic: 通配符,把消息交给符合 Routing pattern (路由模式) 的队列(Topics 模式) 引入依赖 我们在创建 SpringBoot...路由模式 交换机类型为 Direct 时,会把消息交给符合指定 Routing Key 的队列 队列和交换机的绑定,不是任意的绑定了,而是要制定一个 RoutingKey(路由 key) 消息的发送方在向...,队列 2 收到消息 调用接口发送 routingKey 为 c 的消息 http://127.0.0.1:8080/producer/direct/c 观察后端日志,队列 2 收到消息 通配符模式
概念 描述 发送者 消息的生产者,也可以是一个向交换器发布消息的客户端应用程序 接收者 消息的消费者,也可以认为是向消息队列接收消息的服务端程序 Exchange(交换器) 用来接收发送者发送的消息并将这些消息路由给服务器中的队列...RabbitMQ的消息路由走向 RabbitMQ的消息路由走向由Exchange的类型决定;分发消息时根据Exchange类型的不同分发策略有区别,见下表: 类型 描述 Direct 如果消息的routing...Topic 如果消息的routing key与队列binding key(可能会包含通配符)匹配,那么消息将会路由到一个或多个这样的队列上。...2020-07-10 增加删除deleteUser和查找findUser * @date 2020-07-13 首次保存用户后通过邮件管理器发送通知邮件 * @date 2020-07-14 将同步发送通知邮件的功能变更为通过消息队列异步发送...利用消息队列的这种特性我们可以很方便地实现系统应用间的解耦: 用户登记成功后,向客户端返回登记成功的同时,只是向消息队列发送消息,并不等待邮件的发送事件的结果; 而消息队列接收者收到消息后,对消息进行解析
Publisher 消息的生产者,也是一个向交换机发布消息的客户端应用程序。 3....Exchange: 交换机,这是RabbitMQ中的一个非常重要的概念,在rabbitMq中,生产者产生的消息都不是直接发送到队列中去的,而是发送到了交换机中,交换机会通过一定的规则绑定队列,交换机会根据相应的路由规则发送给对服务器中的队列...fanout类型转发消息是最快的。 2.3 topic topic交换机通过模式匹配分配路由的路由键属性,将路由键和某个模式进行匹配,此时队列需要绑定到一个模式上。...它将路由键和绑定键的字符串切分成单词,这些单词之间用.隔开。它同样会识别两个通配符: # 和* 。...3.3 topic 主题交换机,会根据routing-Key的匹配规则,将消息发送到符合规则的队列中。
、消息发送 3、总结 4.3 Topic(通配符) 1、消息发送 2、消息接收 5、消息转换器 5.1 测试默认转换器 5.2 配置JSON转换器 ---- 1、什么是SpringAMQP SpringAMQP...在生产者服务中添加一个测试方法: /** * @description:向队列中不停发送消息,模拟消息堆积。...5、小结 Work模型的使用: 多个消费者绑定到一个队列,同一条消息只会被一个消费者处理 通过设置prefetch来控制消费者预取的消息数量 4、发布/订阅 发布订阅模式与之前案例的区别就是允许将同一消息发送给多个消费者...Exchange有以下3种类型: Fanout:广播,将消息交给所有绑定到交换机的队列 Direct:路由,把消息交给符合指定routing key 的队列 Topic:通配符,把消息交给符合...在Direct模型下: 队列与交换机的绑定,不能是任意绑定了,而是要指定一个RoutingKey(路由key) 消息的发送方在 向 Exchange发送消息时,也必须指定消息的 RoutingKey
封装了RabbitTemplate工具,用于发送消息 3.1.Basic Queue 简单队列模型 在父工程mq-demo中引入依赖 <!...在publisher服务中的SpringAmqpTest类中添加一个测试方法: /** * workQueue * 向队列中不停发送消息,模拟消息堆积。...接收publisher发送的消息 将消息按照规则路由到与之绑定的队列 不能缓存消息,路由失败,消息丢失 FanoutExchange的会将消息路由到每个绑定的队列 声明队列、交换机、绑定关系的Bean是什么...在Direct模型下: 队列与交换机的绑定,不能是任意绑定了,而是要指定一个RoutingKey(路由key) 消息的发送方在 向 Exchange发送消息时,也必须指定消息的 RoutingKey。...21); // 发送消息 rabbitTemplate.convertAndSend("simple.queue","", msg); } 停止consumer服务 发送消息后查看控制台
灵活的分发消息策略。这应该是RabbitMQ的一大特点。在消息进入MQ前由Exchange(交换机)进行路由消息。分发消息策略有:简单模式、工作队列模式、发布订阅模式、路由模式、通配符模式。...Exchange:消息队列交换机。按一定的规则将消息路由转发到某个队列。 Queue:消息队列,存储消息的队列。 Producer:消息生产者。生产方客户端将消息同交换机路由发送到队列中。...生产者发送消息,并指定消息是否持久化等属性和routing key。 exchange收到消息之后,根据routing key路由到跟当前交换机绑定的相匹配的队列里面。...6.3 Topic Exchange 直接翻译的话叫做主题交换机,如果从用法上面翻译可能叫通配符交换机会更加贴切。这种交换机是使用通配符去匹配,路由到对应的队列。通配符有两种:"*" 、 "#"。...启动成功后可以看到队列和路由键绑定的关系: ? 通过POSTMAN进行测试,测试一下 rabbit.# 的路由键是否能够匹配成功: ? 测试成功,队列A消费到消息: ?
简单模式下交换机会使用默认的 "" 2. routingKey:路由名称 3. props:配置信息 4. body:发送消息数据 */...:"+msg); } } 测试 direct模式 路由模式 生产者将消息发送到direct交换器,在绑定队列和交换器的时候有一个路由key,生产者发送的消息会指定一个路由key,那么消息只会发送到相应...也就是让消费者有选择性的接收消息。 路由模式,是以路由规则为导向,引导消息存入符合规则的队列中。再由队列的消费者进行消费的。...:"+msg); } } 测试 Topic模式 上面的路由模式是根据路由key进行完整的匹配(完全相等才发送消息),这里的通配符模式通俗的来讲就是模糊匹配。...与路由模式相似,但是,主题模式是一种模糊的匹配方式 配置类 @Configuration public class RabbitMQConfig { private static final