STOMP协议详解

一、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 Apollo1.0 1.1 1.2ActiveMQ的继承者 http://activemq.apache.org/apollo
Apache ActiveMQ1.0 1.1流行的开源消息服务器 http://activemq.apache.org/
HornetQ1.0来自JBoss的消息中间件 http://www.jboss.org/hornetq
RabbitMQ1.0 1.1 1.2基于Erlang、支持多种协议的消息Broker,通过插件支持STOMP协议http://www.rabbitmq.com/plugins.html#rabbitmq-stomp
Stampy1.2STOMP 1.2规范的一个Java实现 http://mrstampy.github.com/Stampy/
StompServer1.0一个轻量级的纯Ruby实现的STOMP服务器 http://stompserver.rubyforge.org/

这里只列了部分。

2、STOMP客户端库

项目名兼容STOMP的版本描述
activemessaging1.0Ruby客户端库 http://code.google.com/p/activemessaging/
onstomp1.0 1.1Ruby客户端库 https://rubygems.org/gems/onstomp
Apache CMS1.0C++客户端库 http://activemq.apache.org/cms/
Net::STOMP::Client1.0 1.1 1.2Perl客户端库 http://search.cpan.org/dist/Net-STOMP-Client/
Gozirra1.0Java客户端库 http://www.germane-software.com/software/Java/Gozirra/
libstomp1.0C客户端库,基于APR库 http://stomp.codehaus.org/C
Stampy1.2Java客户端库 http://mrstampy.github.com/Stampy/
stomp.js1.0 1.1JavaScript客户端库 http://jmesnil.net/stomp-websocket/doc/
stompest1.0 1.1 1.2Python客户端库,全功能实现,包括同步和异步 https://github.com/nikipore/stompest
StompKit1.2Objective-C客户端库,事件驱动 https://github.com/mobile-web-messaging/StompKit/
stompngo1.0 1.1 1.2Go客户端库 https://github.com/gmallard/stompngo
stomp.py1.0 1.1 1.2Python客户端库 https://github.com/jasonrbriggs/stomp.py
tStomp1.1TCL客户端库 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协议详解
更多相关文章
  • SPISerialPeripheralInterface串行外设接口协议详解+实例
    SPI (Serial Peripheral Interface)串行外设接口 协议详解+实例一.协议简介 单片机及硬件相关技术 来自:http://blog.chinaunix.net/space.php?uid=20697149&do=blog&id=1891451 位寄存器装的 ...
  • )查看主机中的ARP缓存表.如下所示: root@kali :~# arp Address                  HWtype  HWaddress           Flags Mask            Iface 192.168.1.2                ethe ...
  • TCP协议的TIME_WAIT状态详解
    TCP协议的TIME_WAIT状态详解 我发现有个公司面试的时候问了对TCP协议比较细节的地方,那就写一下帮助自己加深理解和记忆.在开始说TIME_WAIT状态之前,要知道TCP协议是如何关闭连接的.很多人对TCP协议的三次握手都很熟悉(不知道的可以参考我以前的帖子),因为学校的垃圾考试都爱考三次握 ...
  • 在Resellerclub自定义DNS服务器步骤详解
    本文章来为各位介绍关于在Resellerclub自定义DNS服务器步骤详解,希望例子能够为各位同学带来有效的帮助ResellerClub创建于1998年,是世界上最大的自有品牌网络解决方案提供商之一,今天要介绍的是如何在reserllerclub设置自定义域名服务器,首先你要申请成为Reseller ...
  • LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统了,今天小编就用到了lvs了,下面一起来看看Lvs负载均衡配置实验用三台Vmware下虚拟的centos5.5服务器,一台作为负载调度器(Lvs-server),两台真实web服务器(web1 ...
  • 本文章为各位详细介绍CentOS / Redhat 上的 Iptables 防火墙配置详解,有兴需要了解的可以和小编来看看.1. Iptables 配置文件¶RHEL / CentOS / Fedora Linux 发行版中默认的配置文件是:/etc/sysconfig/iptables – 系统执 ...
  • 本文章来给各位同学介绍一下关于WordPress esc_url()函数用法详解,希望此教程对各位同学会有所帮助.这个WordPress函数应该是比较常用到的,特别是在插件或者拓展主题功能的时候.今天遇到特此写一篇来备注一下,以后用的到.该esc_url函数主要用于 URL 过滤:1.拒绝不是下面协 ...
  • Windows Server 2003 安装fastcgi图文详解
    本文章来给各位同学详细介绍Windows Server 2003 安装fastcgi图文详解,有需要了解的同学可参考.CGI全称是“公共网关接口”(Common Gateway Interface).它可以用任意语言编写,只要这种语言具有标准输入.输出和环境变量.如php,perl,tcl等,但它为 ...
一周排行