RabbitMQ(消息中间件)在工做中的应用场景

 一、跨系统的异步通讯,全部须要异步交互的地方均可以使用消息队列。就像咱们除了打电话(同步)之外,还须要发短信,发电子邮件(异步)的通信方式。前端

  二、多个应用之间的耦合,因为消息是平台无关和语言无关的,并且语义上也再也不是函数调用,所以更适合做为多个应用之间的松耦合的接口。基于消息队列的耦合,不须要发送方和接收方同时在线。在企业应用集成(EAI)中,文件传输,共享数据库,消息队列,远程过程调用均可以做为集成的方法。数据库

  三、应用内的同步变异步,好比订单处理,就能够由前端应用将订单信息放到队列,后端应用从队列里依次得到消息处理,高峰时的大量订单能够积压在队列里慢慢处理掉。因为同步一般意味着阻塞,而大量线程的阻塞会下降计算机的性能。后端

  四、消息驱动的架构(EDA),系统分解为消息队列,和消息制造者和消息消费者,一个处理流程能够根据须要拆成多个阶段(Stage),阶段之间用队列链接起来,前一个阶段处理的结果放入队列,后一个阶段从队列中获取消息继续处理。架构

  五、应用须要更灵活的耦合方式,如发布订阅,好比能够指定路由规则。并发

  六、跨局域网,甚至跨城市的通信(CDN行业),好比北京机房与广州机房的应用程序的通讯。异步

 

  这里还有一种状况,同时有大量用户注册你的软件,再高并发状况下注册请求开始出现一些问题,例如邮件接口承受不住,或是分析信息时的大量计算使cpu满载,这将会出现虽然用户数据记录很快的添加到数据库中了,可是却卡在发邮件或分析信息时的状况,致使请求的响应时间大幅增加,甚至出现超时,这就有点不划算了。面对这种状况通常也是将这些操做放入消息队列(生产者消费者模型),消息队列慢慢的进行处理,同时能够很快的完成注册请求,不会影响用户使用其余功能。函数

相关文章
相关标签/搜索