RabbitMQ 详解(一)------MQ简介

一.什么是MQ?

概念: 消息队列(MQ):又叫消息中间件。(书面概念不再赘述),通俗讲可以理解为邮局和邮差,用来帮我们存储和转发消息的。

特点:1.是一个独立运行的服务,生产者发生消息,消费者接收消费,需要先跟服务器建立连接。

           2.采用队列作为数据结构,有先进先出的特点

           3.具有发布订阅的模型,消费者可以获取自己需要的消息。

二.面试常见问题

 问题一:Java有许多队列的实现,可以解决消息消费的问题,为什么还需要消息中间件呢?(ps:这个问题可以类比有了HashMap,还要用Redis做缓存是一样的,

     队列不能跨进程,不能在分布式系统中使用,并且没有持久化机制等等。

 问题二:我们为什么要在项目中使用消息中间件?

 1.实现异步通信( ps:同步通信:发出请求,等待返回。异步通信:发出请求,直接返回,被调用者通过状态、通知来通知调用者处理)  

    对数据量大或者处理耗时长的操作,可以使用MQ实现异步通信,减少客户端的等待,提升响应速度,优化客户体验。

  2.实现系统解耦

     对于改动影响较大的系统之间,引入MQ实现解耦,减少系统之间的直接依赖。提升可维护性和可扩展性。

    以一个购物系统为例,使用传统的通信方式,订单系统发生退货时会依次调用下游系统。如下图一。但下游系统是并行关系。引入多线程也是可以实现的,但每一个需要并行执行的地方都引入线程,又会带来线程或者线程池的管理问题。引入消息队列后如图二。

    

   3.实现流量削峰

      MQ既然是队列就具备队列先进先出的特性,在系统一个特殊瞬间到达峰值时,可以把所有流量承接下来,达到保护应用和数据库的目的。比如天猫的双11,如果通过堆硬件的方式去解决,那么在流量峰值过去之后就会出现巨大的资源浪费。

  4.实现广播通信

      实现一对多通信

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值