java面试一日一题:rabbitMQ的工作模式

时间:2021-04-08 13:45:26   收藏:0   阅读:0

问题:请讲下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。

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!