当前位置:首页 > 科技  > 软件

RabbitMQ的四种交换机详解

来源: 责编: 时间:2023-11-06 08:53:38 190观看
导读 交换机主要是接收消息并且转发到绑定的队列,交换机不存储消息,在启用ack模式后,交换机找不到队列会返回错误。交换机有四种类型:Direct, topic, Headers and Fanout。图片一、topic exchange----(模糊匹配) 按规则

  交换机主要是接收消息并且转发到绑定的队列,交换机不存储消息,在启用ack模式后,交换机找不到队列会返回错误。交换机有四种类型:Direct, topic, Headers and Fanout。zKk28资讯网——每日最新资讯28at.com

图片图片zKk28资讯网——每日最新资讯28at.com

一、topic exchange----(模糊匹配) 

    按规则转发消息(最灵活),转发消息主要是根据通配符。在这种交换机下,队列和交换机的绑定会定义一种路由模式,那么,通配符就要在这种路由模式和路由键之间匹配后交换机才能转发消息。zKk28资讯网——每日最新资讯28at.com

    1、 路由键(routingKey):必须是字符,用句号.隔开:例如:"order.a";(一般有发布者定义);zKk28资讯网——每日最新资讯28at.com

    2、路由模式:必须包含一个 星号(*),主要用于匹配路由键指定位置的一个单词, #就表示相当于一个或者多个单词。(例如:order.*.*.*….)(一般由接收者提供),但是也可通过rabbitmq客户端配置。常用在队列Queues定义中。zKk28资讯网——每日最新资讯28at.com

    direct类型要求routingkey完全相等,但是topic exchange可以有通配符:“*”:表示匹配一个单词, “#”:则表示匹配没有或者多个单词。优势:可实现批量订阅消费。(Routingkey与Queues之间支持模糊匹配)。zKk28资讯网——每日最新资讯28at.com

图片图片zKk28资讯网——每日最新资讯28at.com

案例:zKk28资讯网——每日最新资讯28at.com

/**     * 功能描述:通过消费端注解绑定的方式发送Topic交换机中     * @MethodName: sendTopicMessageByZJ     * @MethodParam: [messageData]     * @Return: void     * @Author: yyalin     * @CreateDate: 2022/4/9 18:17     */    public void sendTopicMessageByZJ(String messageData){        CorrelationData correlationData = new CorrelationData("1");        rabbitTemplate.convertAndSend("topicExchange",                "china.car",messageData,correlationData);    }

zKk28资讯网——每日最新资讯28at.com

二、direct exchange----默认的(全文匹配)

    direct 类型的行为是"先匹配, 再投送". 即:在绑定时设定一个 routingkey, 消息的routingkey 匹配时, 才会被交换器投送到绑定的队列中。是RabbitMQ默认的交换机模式,也是最简单的模式,根据key全文匹配去寻找队列。(按照routingkey分发到指定队列)zKk28资讯网——每日最新资讯28at.com

    所有发送到direct exchange的消息被转发到routingkey中指定到queue。zKk28资讯网——每日最新资讯28at.com

注意:direct模式可使用rabbitmq自带的exchange:AMQP default,所以不需将exchange进行任何绑定操作(binding),消息传递时,routingkey必须完全匹配才会被对列接收,否则该消息会被抛弃。(Routingkey与Queues之间必须全文匹配)。zKk28资讯网——每日最新资讯28at.com

图片图片zKk28资讯网——每日最新资讯28at.com

    在direct类型的exchange中,只有routingkey完全相同,exchange才会选择对应的binging进行消息路由。zKk28资讯网——每日最新资讯28at.com

案例:zKk28资讯网——每日最新资讯28at.com

/**     * 功能描述:通过消费端注解绑定的方式发送Direct交换机中     * @MethodName: sendDirectMessageByZJ     * @MethodParam: [messageData]     * @Return: void     * @Author: yyalin     * @CreateDate: 2022/4/9 18:17     */    public void sendDirectMessageByZJ(String messageData){        CorrelationData correlationData = new CorrelationData("1");        rabbitTemplate.convertAndSend("directExchange",                "blue",messageData,correlationData);    }

zKk28资讯网——每日最新资讯28at.com

三、headers Exchange----(自定义匹配规则)

    设置header attribute参数类型的交换机,相较于 direct 和 topic 固定地使用 routing_key , headers 则是一个自定义匹配规则的类型. 在队列与交换器绑定时, 会设定一组键值对规则, 消息中也包括一组键值对( headers 属性), 当这些键值对有一对, 或全部匹配时, 消息被投送到对应队列.zKk28资讯网——每日最新资讯28at.com

四、fanout Exchange----(消息广播模式)

    转发消息到所有绑定队列,消息广播的模式,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了routing_key会被忽略。(直接将消息路由到所有绑定的队列中,无须对消息的routingkey进行匹配操作)。zKk28资讯网——每日最新资讯28at.com

图片图片zKk28资讯网——每日最新资讯28at.com

案例:zKk28资讯网——每日最新资讯28at.com

/**     * 功能描述:发送FanoutMessage消息     * @MethodName: sendFanoutMessage     * @MethodParam: [messageData]     * @Return: void     * @Author: yyalin     * @CreateDate: 2022/4/9 17:46     */    public void sendFanoutMessage(String messageData){        CorrelationData correlationData = new CorrelationData("1");        rabbitTemplate.convertAndSend("fanoutExchange",                "",messageData,correlationData);    }

五、总结

     一般direct和topic用来具体的路由消费,若要用广播的消息一般用fanout的exchange,header类型比较少。zKk28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-17168-0.htmlRabbitMQ的四种交换机详解

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: C++中线程编程的应用,注意点,源代码解析

下一篇: 如何使用图算法,帮助我们理解和处理复杂的关系型数据

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • 卢伟冰长文解析K60至尊版 对Redmi有着里程碑式的意义

    卢伟冰长文解析K60至尊版 对Redmi有着里程碑式的意义

    在今天的Redmi后性能时代战略发布会结束之后,Redmi总经理卢伟冰又带来了一篇长文,详解了为什么 Redmi 要开启后性能时代?为什么选择和 MediaTek、Pixelworks 深度合作?以及后性
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • Automa-通过连接块来自动化你的浏览器

    Automa-通过连接块来自动化你的浏览器

    1、前言通过浏览器插件可实现自动化脚本的录制与编写,具有代表性的工具就是:Selenium IDE、Katalon Recorder,对于简单的业务来说可快速实现自动化的上手工作。Selenium IDEKat
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 之家push系统迭代之路

    之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 从零到英雄:高并发与性能优化的神奇之旅

    从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
  • iQOO 11S屏幕细节公布:首发三星2K E6全感屏 安卓最好的直屏手机

    iQOO 11S屏幕细节公布:首发三星2K E6全感屏 安卓最好的直屏手机

    日前iQOO手机官方宣布,新一代电竞旗舰iQOO 11S将会在7月4日19:00正式与大家见面。随着发布时间的日益临近,官方关于该机的预热也更加密集,截至目前已
Top
Baidu
map