消息中间件

一,什么是消息中间件

       关注于数据的发送接收,利用高效可靠的异步消息传递机制集成分布式系统

      1.老王最开始讲故事时需要挨个打电话给小红,小黄。有时还有可能打不通。但是通过微信公众号,可以将消息发送到公众号,然后再小红小黄有空的时间再订阅。

   2.登录系统的例子 

        通过服务调用外部系统感知服务在使用消息中间件和不使用的区别:

        a.在不使用的时候,需要逐个调用与登录有关的服务,若果消息服务调用失败,那么登录就失败了。耦合度太高。

          

       b.在使用中间件以后,用消息中间件解耦服务

          

二:   消息中间件的好处:解耦,异步,横向扩展,安全(消息中间件可以将消息保存),顺序保证。

三:  JMS(Java Message Service)  是Java平台中面向消息中间件的API,用于两个应用程序之间,或分布式系统中发送消息,进行异步通信。

         AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。Erlang中的实现有 RabbitMQ等。

         1.   JMS和AMQP的区别

         

         

         2.  常见的消息中间件的对比

              a.   ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

              ActiveMQ的特点  : 

      ⒈ 多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
      ⒉ 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
      ⒊ 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
      ⒋ 通过了常见J2EE服务器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任                            何兼容J2EE 1.4 商业服务器上

      ⒌ 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
      ⒍ 支持通过JDBC和journal提供高速的消息持久化
      ⒎ 从设计上保证了高性能的集群,客户端-服务器,点对点
      ⒏ 支持Ajax
      ⒐ 支持与Axis的整合
      ⒑ 可以很容易的调用内嵌JMS provider,进行测试

                     11.虚拟主题,组合目的,镜像队列

               b.  RabbitMQ  是 开源的AMQP实现,服务端用Erlang编写用于分布式系统中存储转发消息,具有易用性,可扩展性,高可用性。

               c.  kafka  日志服务,要求顺序

               d.  对比

                   

                              

原文地址:https://www.cnblogs.com/SitongLiu/p/7278841.html