服务端消息框架

消息规范

JMS:Java Message Service,Java消息服务,是基于JVM消息代理的规范。
AMQP:Advanced Message Queuing Protocol,高级消息队列协议,也是一个消息代理的规范,它不仅兼容JMS,还支持跨语言和平台。2004年,摩根大通和iMatrix开始着手AMQP开放标准的开发。2006年,AMQP规范发布。2007年,Rabbit技术公司基于AMQP标准开发的RabbitMQ 1.0 发布。RabbitMQ采用Erlang语言开发。
AMQP与JMS不同,JMS定义了一个API和一组行为,而AMQP是一个线路级协议。线路级协议描述的是通过网络发送的数据传输格式,任何符合该数据格式的消息发送和接收工具都能互相兼容和进行操作,这样能实现跨技术平台的架构方案。
MQTT:物联网(Internet of Things,IoT)机器之间(Machine-to-Machine,M2M)的大规模沟通中使用传统的HTTP请求/回答(Request/Response)模式不再合适,取而代之的是发布/订阅(Publish/Subscribe)模式。这就是轻量级、可扩展的MQTT,即Message Queuing Telemetry Transport,消息队列遥测传输,是IBM开发的一个即时信息传输通讯协议,是一个客户端服务端架构的发布/订阅模式的基于TCP/IP的基于二进制的消息传输协议。在物联网开发中,MQTT不是唯一的选择,与MQTT互相竞争的协议有XMPP和CoAP协议等,MQTT如今已经成为OASIS规范。MQTT规范很简单,非常适合需要低功耗和网络带宽有限的IoT场景。
TCP/IP参考模型可以分为四层:应用层、传输层、网络层、链路层。TCP和UDP位于传输层,应用层常见的协议有HTTP、FTP、SSH等。MQTT协议运行于TCP之上,属于应用层协议,因此只要是支持TCP/IP协议栈的地方,都可以使用MQTT。

异步消息

异步消息中有两个很重要的概念,即消息代理(message broker)和目的地(destination),消息发送者发送消息之后,消息将由消息代理接管,再由消息代理负责保证消息传递到指定目的地。
目的地形式有两种:队列(queue)和主题(topic)。队列用于点对点(point-to-point)形式的消息通信,主题用于发布订阅式(publish/subscribe)的消息通信。队列中的消息一次取出即逝,主题形式的消息可以做到多次使用。

消息框架

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

kafka同RabbitMQ,ActiveMQ等是分布式消息队列,或者叫分布式消息中间件,或者叫做一种MQ产品(Message Queue)。kafka不支持MQTT协议。

参考:
管中窥豹:一线工程师看MQTT,协议详解 http://blog.csdn.net/tangxiaoyin/article/details/76053348
MQTT-Node.js实现-Mosca简介
http://www.jianshu.com/p/8315acec4e6b
MQTT入门篇
https://zhuanlan.zhihu.com/p/20888181
物联网核心协议—消息推送技术演进
http://www.cnblogs.com/Free-Thinker/p/5559798.html
物联网MQTT协议分析和开源Mosquitto部署验证 mosquitto_sub -t topic_name
http://www.cnblogs.com/Free-Thinker/p/5559816.html
MQTT协议笔记之消息流
http://www.blogjava.net/yongboy/archive/2014/02/15/409893.html
MQTT协议通俗讲解
http://blog.csdn.net/u011216417/article/details/69666752
Spring Integration Reference Manual
https://docs.spring.io/spring-integration/reference/html/index.html
MQTT Support Part V. Integration Endpoints
https://docs.spring.io/spring-integration/reference/html/mqtt.html
Eclipse Paho Java Client
https://www.eclipse.org/paho/clients/java/
http://www.eclipse.org/paho/files/javadoc/index.html

发表评论