ActiveMQ-为什么需要消息中间件及优缺点。

与远程调用机制以及REST接口类似,异步消息也是用于应用程序之间通信的。

    RMI、Hessian、Burlap、HTTP invoker和Web服务在应用程序之间的通信机制是同步的,即客户端应用程序直接与远程服务相交互,并且一直等到远程过程完成后才继续执行。而消息是异步发送的,客户端不需要等待服务处理消息,甚至不需要等待消息投递完成。客户端发送消息,然后继续执行,这是因为客户端假定服务最终可以收到并处理这条消息。

ActiveMQ-为什么需要消息中间件及优缺点。_第1张图片

优势:

  • 低耦合,不管是程序还是模块之间,使用消息中间件进行间接通信。
  • 消息的顺序性,消息队列可以保证消息的先进先出。
  • 消息可靠传输,持久化的存储使得消息只有在被消费之后才会删除。
  • 异步通信能力,相对于RPC来说,异步通信使得生产者和消费者得以充分执行自己的逻辑而无需等待。
  • 缓冲能力,消息中间件像是一个巨大的蓄水池,将高峰期大量的请求存储下来慢慢交给后台进行处理,对于秒杀业务来说尤为重要。

优点

异步通信。客户端无需等待服务端的响应,节省时间,提升客户端的效率。

面向消息与解耦。客户端不需要与特定的方法签名绑定,任何可以处理数据的队列或主题订阅者都可以处理由客户端发送的消息,而客户端不必了解远程服务的任何规范。

位置独立。由于客户端并不直接与服务端通信,而是把消息交由消息代理。因此,只要服务能够从队列或主题中获取消息即可,消息客户端根本不需要关注服务来自哪里。而且可以使用服务器集群监听同一个消息代理提升服务器负载。

缺点:

增加复杂度。毫无疑问,消息代理这个东西是多出来的,需要维护成本。

暂时的不一致性。异步消息方式可以确保最终的一致性,但是可能存在客户端把消息给了消息队列,而服务端暂时还没处理这个队列导致的暂时不一致性问题。

 

你可能感兴趣的:(mq)