• 【Java面试题】这道经典面试题,RabbitMQ的消息如何实现路由,怎么回答才能镇住面试官


    大家好,我是Mic,一个没有才华只能靠颜值混饭吃的Java程序员。

    今天分享的这个面试题,没什么特别复杂和特殊的地方。

    就是一个RabbitMQ里面的普通面试题;

    这个问题一般是去互联网公司里面 去考察3~5年的求职者。

    问题是: “RabbitMQ的消息如何实现路由”?

    高手部分的回答已经整理到了10W字的面试文档里面,大家可以扫描文章尾端二维码领取。

    下面看看高手的回答

    大家记得点赞、收藏加关注!!!

    需要高手面试文档面试文档的小伙伴可以扫描文章底部二维码

    高手:

    RabbitMQ是一个基于AMQP协议实现的分布式消息中间件。

    AMQP的具体工作机制是,生产者把消息发送到RabbitMQ Broker上的Exchange交换机上。

    Exchange交换机把收到的消息根据路由规则发给绑定的队列(Queue)。

    最后再把消息投递给订阅了这个队列的消费者,从而完成消息的异步通讯。

    其中,Exchange是一个消息交换机,它里面定义了消息路由的规则,也就是这个消息路由到那个队列。

    然后Queue表示消息的载体,每个消息可以根据路由规则路由到一个或者多个队列里面。

    而关于消息的路由机制,核心的组件是Exchange。

    它负责接收生产者的消息然后把消息路由到消息队列,而消息的路由规则由ExchangeType和Binding决定。

    Binding表示建立Queue和Exchange之间的绑定关系,每一个绑定关系会存在一个BindingKey。

    通过这种方式相当于在Exchange中建立了一个路由关系表。

    生产者发送消息的时候,需要声明一个routingKey(路由键),Exchange拿到routingKey之后,根据RoutingKey和路由表里面的BindingKey进行匹配,而匹配的规则是通过ExchangeType来决定的。

    在RabbitMQ中,有三种类型的Exchange:direct ,fanout和topic。

    • direct: 完整匹配方式,也就是Routing key和Binding Key完全一致,相当于点对点的发送。

    • fanout: 广播机制,这种方式不会基于Routing key来匹配,而是把消息广播给绑定到当前Exchange上的所有队列上。

    • topic: 正则表达式匹配,根据Routing Key使用正则表达式进行匹配,符合匹配规则的Queue都会收到这个消息

    总结

    RabbitMQ、Kafka、RocketMQ是目前最主流的分布式消息中间件了。

    有的同学可能对kafka比较了解,有的同学可能对RabbitMQ比较了解。

    不过,在面试的时候,面试官一般会问你用过的技术组件。

    通过面试过程中推演出你的学习能力以及对技术的掌握能力,这个方面如果还不错的话,接触一个新的MQ组件所消耗的学习成本会比较小。

    另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新180期,总计超过15W字!

    【想领取面试文档的小伙伴可以点击文章底部名片无套路免费赠送给大家!】

    需要高手面试文档面试文档的小伙伴可以扫描下方二维码
    ↓↓↓↓↓↓↓↓↓↓↓↓↓

  • 相关阅读:
    如何使用Arduino构建3D打印的电子动画眼睛
    51单片机超声波测距代码
    2022 年全球十大最佳自动化测试工具
    计算机视觉-图像的傅里叶变换
    Git的注册登录以及具体使用
    postgresql-常用数学函数
    2023年哪些渲染器更好用?3D新手适合的渲染器汇总
    ZYNQ通过AXI DMA实现PL发送连续大量数据到PS DDR
    【JAVA入门】JUnit单元测试、类加载器、反射、注解
    idea2023和历史版本的下载
  • 原文地址:https://blog.csdn.net/q331464542/article/details/126265597