消息中间件
一,什么是消息中间件
关注于数据的发送和接收,利用高效可靠的异步消息传递机制集成分布式系统。
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. 对比