一、STOMP协议介绍

STOMP即Simple (or Streaming) Text Orientated Messaging Protocol,简单(流)文本定向消息协议,它提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互。STOMP协议由于设计简单,易于开发客户端,因此在多种语言和多种平台上得到广泛地应用。

STOMP协议的前身是TTMP协议(一个简单的基于文本的协议),专为消息中间件设计。

STOMP是一个非常简单和容易实现的协议,其设计灵感源自于HTTP的简单性。尽管STOMP协议在服务器端的实现可能有一定的难度,但客户端的实现却很容易。例如,可以使用Telnet登录到任何的STOMP代理,并与STOMP代理进行交互。

STOMP协议与2012年10月22日发布了最新的STOMP 1.2规范。
要查看STOMP 1.2规范,见: https://stomp.github.io/stomp-specification-1.2.html

二、STOMP的实现

业界已经有很多优秀的STOMP的服务器/客户端的开源实现,下面就介绍一下这方面的情况。

1、STOMP服务器

项目名 兼容STOMP的版本 描述
Apache Apollo 1.0 1.1 1.2 ActiveMQ的继承者 http://activemq.apache.org/apollo
Apache ActiveMQ 1.0 1.1 流行的开源消息服务器 http://activemq.apache.org/
HornetQ 1.0 来自JBoss的消息中间件 http://www.jboss.org/hornetq
RabbitMQ 1.0 1.1 1.2 基于Erlang、支持多种协议的消息Broker,通过插件支持STOMP协议 http://www.rabbitmq.com/plugins.html#rabbitmq-stomp
Stampy 1.2 STOMP 1.2规范的一个Java实现 http://mrstampy.github.com/Stampy/
StompServer 1.0 一个轻量级的纯Ruby实现的STOMP服务器 http://stompserver.rubyforge.org/

这里只列了部分。

2、STOMP客户端库

项目名 兼容STOMP的版本 描述
activemessaging 1.0 Ruby客户端库 http://code.google.com/p/activemessaging/
onstomp 1.0 1.1 Ruby客户端库 https://rubygems.org/gems/onstomp
Apache CMS 1.0 C++客户端库 http://activemq.apache.org/cms/
Net::STOMP::Client 1.0 1.1 1.2 Perl客户端库 http://search.cpan.org/dist/Net-STOMP-Client/
Gozirra 1.0 Java客户端库 http://www.germane-software.com/software/Java/Gozirra/
libstomp 1.0 C客户端库,基于APR库 http://stomp.codehaus.org/C
Stampy 1.2 Java客户端库 http://mrstampy.github.com/Stampy/
stomp.js 1.0 1.1 JavaScript客户端库 http://jmesnil.net/stomp-websocket/doc/
stompest 1.0 1.1 1.2 Python客户端库,全功能实现,包括同步和异步 https://github.com/nikipore/stompest
StompKit 1.2 Objective-C客户端库,事件驱动 https://github.com/mobile-web-messaging/StompKit/
stompngo 1.0 1.1 1.2 Go客户端库 https://github.com/gmallard/stompngo
stomp.py 1.0 1.1 1.2 Python客户端库 https://github.com/jasonrbriggs/stomp.py
tStomp 1.1 TCL客户端库 https://github.com/siemens/tstomp

这里只列了部分。

三、STOMP协议分析

STOMP协议与HTTP协议很相似,它基于TCP协议,使用了以下命令:

CONNECT
SEND
SUBSCRIBE
UNSUBSCRIBE
BEGIN
COMMIT
ABORT
ACK
NACK
DISCONNECT

STOMP的客户端和服务器之间的通信是通过“帧”(Frame)实现的,每个帧由多“行”(Line)组成。
第一行包含了命令,然后紧跟键值对形式的Header内容。
第二行必须是空行。
第三行开始就是Body内容,末尾都以空字符结尾。
STOMP的客户端和服务器之间的通信是通过MESSAGE帧、RECEIPT帧或ERROR帧实现的,它们的格式相似。

stomp协议简介 服务器客户端通讯协议相关推荐

  1. qq的服务器协议,公开OICQ所有通讯协议

    公开OICQ所有通讯协议 互联网   发布时间:2009-04-27 02:02:55   作者:佚名   我要评论 协议说明: 协议由报文头(T) 发送者(T) 接收者(T) 报文类型(T) 报文长 ...

  2. OICQ服务器系统通讯协议

    协议说明:       协议由报文头(T)+发送者(T)+接收者(T)+报文类型(T)+报文长度(L)+报文内容组成       发送者和接收者是系统 内的程序种类,OICQ服务器0x01,传真服务器 ...

  3. OICQ服务器系统通讯协议 1

    网摘. OICQ服务器系统通讯协议       协议说明:       协议由报文头(T)+发送者(T)+接收者(T)+报文类型(T)+报文长度(L)+报文内容组成       发送者和接收者是系统内 ...

  4. 充电桩与后台服务器通迅协议,充电桩平台通讯协议.doc

    充电桩平台通讯协议 充电桩平台通讯协议 交运工业技术处 2016年9月25日 目录 1. 设备与业务接入模式 ............................................. ...

  5. qt通过websocket和html通信,QT Websocket实现服务器客户端通讯(服务端部分)

    接上文QT Websocket实现服务器客户端通讯(客户端部分)web https://blog.csdn.net/qq_39573345/article/details/80682232 服务器 S ...

  6. 自由口协议转标准modbus通讯协议 非标协议转标准协议

    自由口协议转标准modbus通讯协议 非标协议转标准协议 编号:32199664417078228九妹健康快乐成长

  7. 充电桩与后台服务器通迅协议,充电桩平台通讯协议.pdf

    充电桩平台通讯协议 交运工业技术处 2016 年9 月25 日 目录 1. 设备与业务接入模式3 2. HTTP 原始报文格式4 3. 平台报文一览5 4. 平台报文详细6 4.1. 请求报文6 4. ...

  8. so部标协议模拟服务器,808部标协议

    满意答案 豆.浆 2016.10.12 采纳率:58%    等级:25 已帮助:62843人 基于部标JT/T 808协议及数据格式的GPS服务器 2011年5月10日中国交通通信信息中心下发了&l ...

  9. 买个服务器来挂协议,云服务器代挂协议在哪

    云服务器代挂协议在哪 内容精选 换一换 本节为您介绍如何在本机使用远程登录工具MSTSC登录Windows弹性云服务器.弹性云服务器状态为"运行中".如果弹性云服务器采用密钥方式鉴 ...

最新文章

  1. K8S的横向自动扩容的功能Horizontal Pod Autoscaling
  2. Linux常用命令——fsck
  3. 图像形态学操作—腐蚀膨胀深入
  4. 名词解释计算机网络体系结构,计算机网络技术题库(带答案).doc
  5. 从Firefox控制您喜欢的音乐播放器
  6. 一个好端端的团队是如何被管理者搞垮的?
  7. 塞尔达传说gba_《塞尔达传说缩小帽》是系列一年级生?,回忆众多玩友的启蒙之作...
  8. Java线程的同步 - synchronized
  9. python实训报告pygame_20192418 2019-2020-2 《Python程序设计》实验4报告
  10. 【图像分割】基于matlab免疫遗传算法单阈值图像分割【含Matlab源码 729期】
  11. SLAM领域著名实验室及大牛、SLAM领域大佬(不定期更新)
  12. 安装Dukto局域网通讯工具
  13. python的os库——批量修改文件名称
  14. 用计算机弹刚好一点,《计算机组成原理》作业解答(14级)
  15. _search.php_wholesale_search.php
  16. 【激励自己】牛人职场分享汇总
  17. NiFi 的使用心得
  18. SOA(面向服务的架构)
  19. PHP项目的发布(部署)
  20. SDUT OJ 2977

热门文章

  1. C 语言编程 — 程序的编译流程
  2. MAC Pro 同时安装 Python2 和 Python3
  3. 用 Flask 来写个轻博客 (33) — 使用 Flask-RESTful 来构建 RESTful API 之二
  4. 模型评估方法和性能指标
  5. vuex 基本入门和使用(二)
  6. iOS学习资源(一)
  7. 关于向Mybatis传递多个参数进行SQL查询的用法
  8. java on RHEL5
  9. Samba 4.10 发布,完全支持 Python 3
  10. 查看linux服务器硬盘IO读写负载