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

RabbitMQ的四种交换机详解

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

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

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

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

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

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

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

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

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

案例:l1t28资讯网——每日最新资讯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);    }

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

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

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

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

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

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

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

案例:l1t28资讯网——每日最新资讯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);    }

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

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

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

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

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

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

案例:l1t28资讯网——每日最新资讯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类型比较少。l1t28资讯网——每日最新资讯28at.com

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

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

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

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

标签:
  • 热门焦点
  • 小米降噪蓝牙耳机Necklace分享:听一首歌 读懂一个故事

    在今天下午的小米Civi 2新品发布会上,小米还带来了一款新的降噪蓝牙耳机Necklace,我们也在发布结束的第一时间给大家带来这款耳机的简单分享。现在大家能见到最多的蓝牙耳机
  • 得物效率前端微应用推进过程与思考

    一、背景效率工程随着业务的发展,组织规模的扩大,越来越多的企业开始意识到协作效率对于企业团队的重要性,甚至是决定其在某个行业竞争中突围的关键,是企业长久生存的根本。得物
  • 这款新兴工具平台,让你的电脑效率翻倍

    随着信息技术的发展,我们获取信息的渠道越来越多,但是处理信息的效率却成为一个瓶颈。于是各种工具应运而生,都在争相解决我们的工作效率问题。今天我要给大家介绍一款效率
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    IT之家 7 月 31 日消息,华为今日公布了 HDC.Together 开发者大会 2023 的详细日程。整场大会将于 8 月 4 日-6 日之间举行,届时将发布最新一代鸿蒙 H
  • 2299元起!iQOO Pad开启预售:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其搭载了天玑
  • Windows 11发布,微软一改往常对老机型开放的态度

    距离 Windows 11 发布已经过去一周,在过去一周里,很多数码爱好者围绕其对 Android 应用的支持、对老机型的升级问题展开了激烈讨论。与以往不同的是,在这次大
  • “买真退假” 这种“羊毛”不能薅

    □ 法治日报 记者 王春   □ 本报通讯员 胡佳丽  2020年初,还在上大学的小东加入了一个大学生兼职QQ群。群主“七王”在群里介绍一些刷单赚
  • 中关村论坛11月25日开幕,15位诺奖级大咖将发表演讲

    11月18日,记者从2022中关村论坛新闻发布会上获悉,中关村论坛将于11月25至30日在京举行。本届中关村论坛由科学技术部、国家发展改革委、工业和信息化部、国务
Top