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

RabbitMQ的四种交换机详解

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 7月安卓手机好评榜:三星S23Ultra好评率第一

    7月安卓手机好评榜:三星S23Ultra好评率第一

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年7月1日至7月31日,仅限国内市场。第一名:三星Galaxy S23 Ultra好评率:95.71%在即将迎来新
  • 28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈

    28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈

    前言在使用SpringBoot开发中或者在求职面试中都会使用到很多注解或者问到注解相关的知识。本文主要对一些常用的注解进行了总结,同时也会举出具体例子,供大家学习和参考。注解
  • Golang 中的 io 包详解:组合接口

    Golang 中的 io 包详解:组合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是对Reader和Writer接口的组合,
  • Flowable工作流引擎的科普与实践

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

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 2天涨粉255万,又一赛道在抖音爆火

    2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了——贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • “又被陈思诚骗了”

    “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    IT之家 7 月 31 日消息,华为今日公布了 HDC.Together 开发者大会 2023 的详细日程。整场大会将于 8 月 4 日-6 日之间举行,届时将发布最新一代鸿蒙 H
  • 滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 存在16项违法事实开始于2121年7月,历经一年时间,网络安全审查办公室对“滴滴出行”网络安全审查终于有了一个暂时的结束。据“网信
Top