1、什么是消息中间件?
关注于数据的发送和接收,利用高效可靠地异步消息传递机制集成分布式系统。
2、什么是JMS? java - api
Java 消息服务(Java Message Service)即JMS, 是一个Java 平台(不能跨语言)中关于面向消息中间件的API,用户两个应用程序之间,或分布式系统中发送消息,进行异步通信。
3、AMQP协议(为了跨语言) Wire-protocaol, 只支持 byte[] 二进制的消息类型
AMQP(advanced message queuing protocol) 是一个提供统一消息服务的应用层标准协议,给予此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。
4、常用的消息中间件
<1> ActiveMQ 完全支持JMS1.1与J2EE 1.4规范的JMS Provider实现。
支持多种语言 Java c c++ c# Ruby Perl Python php,支持的应用协议:OpenWire, Stomp REST, WS Notification, Xmpp, AMQP (没有JMS 因为不是应用协议,只是开发规范)。
<2> RabbitMQ 是一个开源的AMQP实现,服务器端使用Erlang语言编写,用于在分布式系统中存储转发消息,在易用性和扩展性 高可用等方便变现不俗
支持多种客户端, 如 Python Ruby .Net java jms c php等
<3> kafka 是一种高吞吐量的分布式发布订阅消息系统,是一个分布式的,分区的,可靠地分布式日志存储服务,它通过一种独一无二的设计提供了一个消息系统的功能。不是一个严格的消息中间件,
主要是用来做日志储存。即使是非常普通的硬件kafka也可以支持每秒数百万的消息。
比对:
5、消息模式
主题和队列两种模式。
队列模型: 客户端包含生产者和消费者
队列中的消息只能被一个消费者消费
消费者可以随时消费队列中的消息
主题模型: 客户端包括发布者和订阅者
主题中的消息被所有的订阅者消费
消费者不能消费订阅之前就发送到主题中的消息
6、JMS 编码接口之间的关系