java面试一日一题:rabbitMQ的工作模式
2021-06-05 09:03
标签:基础 工作 之间 选择 通过 好的 订阅 生产者 bsp 问题:请讲下rabbitMQ的工作模式 分析:该问题纯属概念题,需要掌握rabbtiMQ的基础知识,同时该题也是切入MQ的一个引子; 回答要点: 主要从以下几点去考虑, 1、rabbitMQ的基本概念? 2、交换机的概念? rabbitmq有以下几种工作模式, 简单模式 简单模式,是一个生产者对应一个消费者,mq起到一个代理的作用, 使用场景:可以作为一个队列来使用,比如发邮件功能,生产者把要发送的邮件交给MQ,发邮件服务从MQ中获取邮件进行发送,很好的解耦特性的体现 工作队列模式 工作队列模式,是一个生产者对应多个消费者的情况,多个消费者之间是竞争的关系,也就是会消费同一个队列中的消息,所有的消费者加起来消费的消息是生产者产生消息的总和; 应用场景:一个消费者消费不过来的情况下,可以使用工作队列的模式,多个消费者从多个队列消费,前提是消息不确保有序性; 发布/订阅模式 一个消费者产生的消息同时向多个消费者投递,也就是说每个消息者都可以拿到所有的消息进行消费;要使用fanout类型的交换机; 应用场景:在购物场景下,生成一个订单,下游要进行支付、发货邓操作,这时把消息投递到MQ,支付服务、发货服务都订阅MQ,这样每个服务都可以拿到所有的消息进行消费 路由模式 消费者有选择性的接收消息,那么如何区分自己要接收那种类型的消息那,答案是通过路由键,在消费者将队列绑定到交换机时需要指定路由键,同时生产者在向mq发生消息的时候也会指定路由键;要使用direct类型的交换机; 使用场景:当某个消费者需要消费某类消息,比如消费key为redmi1的消息,那么就可以使用该模式 主题模式 根据主题去接收消息,这里的主题指的是某种类型,在路由键的基础上增加匹配的功能,使用#匹配一个或多个词,使用*仅匹配一个词,很像sql中的like功能,同时生产者需要指定路由键;要使用topic类型的交换机; 使用场景:结合上面的例子,现在要消费key为redmi1 redmi2 redmi3的消息,使用多个路由键的情况路由模式便不满足,那么可以使用主题模式使用redmi#,这样以redmi的消息都会由特定的消费者消费; 从上面又可以引申出rabbitmq中交换机的类型,常用的就是上面提到的3种,fanout、direct 、topic。 java面试一日一题:rabbitMQ的工作模式 标签:基础 工作 之间 选择 通过 好的 订阅 生产者 bsp 原文地址:https://www.cnblogs.com/teach/p/14629880.html
文章标题:java面试一日一题:rabbitMQ的工作模式
文章链接:http://soscw.com/index.php/essay/90806.html