、MQ介绍

MQ 是(message queue) ,消息队列,消息中间件,采用JMS(java message service)规范的一种程序。它作为一个存储数据的容器独立部署在服务器上,提供接口给其他系统调用。

Mq消息中间件完成RPC调用的异步执行,服务调用之间的解耦合,提高主要(核心)服务的响应速度。

在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。

 

 

、为什么要使用MQ?

1.解耦

       比如有四个系统,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,特别麻烦!

使用中间件后,直接将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。

 

2.接口异步处理

      将消息写入消息队列,非必要的业务逻辑以异步的方式运行,所谓异步,就是不需要等待某个系统调用完成,它是非阻塞的,可以直接结束调用,没有返回值的可以这么调用,加快响应速度。

远程服务的调用分为:

         同步调用:他是阻塞的,必须等待调用返回结果,才能结束调用。

                  

Java的MES是什么意思 java中mq是什么意思_异步处理

     异步调用:某个服务将另外一个服务需要的数据放入消息队列中,另外一个服务读取消息队列中的数据,完成特定的功能。降低生产者和服务消费者的耦合,提高通讯的效率。

Java的MES是什么意思 java中mq是什么意思_消息队列_02

3.流量削峰

         并发量大的时候,所有的请求都直接怼到数据库上,造成数据库连接异常

         消费者系统可以慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期积压是允许的。

 

使用了消息队列会有什么缺点?

答:1.系统可用性降低:如果消息队列挂了,系统将不能正常工作。

         2.系统复杂性增加:出现更多的问题需要考虑,比如:一致性问题、如何保证消息不被重复消费,如何保证消息可靠传输等等。

        3.消息传递路径更长,会增加延时(一些不重要的服务可以接受)

        4.上游无法知道下游的执行结果(没有返回值的服务可以接受)