zoukankan      html  css  js  c++  java
  • java面试一日一题:rabbitMQ的工作模式

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

    一个爱写文章的程序员,欢迎关注我的公众号“北漂程序员”。我有故事,你有酒吗
  • 相关阅读:
    Android8.0 启动后台Service
    上周热点回顾(7.20-7.26)团队
    上周热点回顾(7.13-7.19)团队
    上周热点回顾(7.6-7.12)团队
    博客园-阿里云开发者俱乐部上海地区七月份活动通知(2015-07-18)团队
    上周热点回顾(6.29-7.5)团队
    .NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息团队
    从一个简单的ASP.NET 5站点开启.NET跨平台之旅团队
    上周热点回顾(6.22-6.28)团队
    云计算之路-阿里云上:9:55-10:08因流量攻击被进黑洞,造成主站不能正常访问团队
  • 原文地址:https://www.cnblogs.com/teach/p/14629880.html
Copyright © 2011-2022 走看看