STOMP協議詳解

 

 

STOMP協議詳解

做者:chszs,轉載需註明。博客主頁:http://blog.csdn.net/chszs

1、STOMP協議介紹

STOMP即Simple (or Streaming) Text Orientated Messaging Protocol,簡單(流)文本定向消息協議,它提供了一個可互操做的鏈接格式,容許STOMP客戶端與任意STOMP消息代理(Broker)進行交互。STOMP協議因爲設計簡單,易於開發客戶端,所以在多種語言和多種平臺上獲得普遍地應用。html

STOMP協議的前身是TTMP協議(一個簡單的基於文本的協議),專爲消息中間件設計。git

STOMP是一個很是簡單和容易實現的協議,其設計靈感源自於HTTP的簡單性。儘管STOMP協議在服務器端的實現可能有必定的難度,但客戶端的實現卻很容易。例如,能夠使用Telnet登陸到任何的STOMP代理,並與STOMP代理進行交互。github

STOMP協議與2012年10月22日發佈了最新的STOMP 1.2規範。
要查看STOMP 1.2規範,見: https://stomp.github.io/stomp-specification-1.2.htmlweb

2、STOMP的實現

業界已經有不少優秀的STOMP的服務器/客戶端的開源實現,下面就介紹一下這方面的狀況。apache

一、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/

這裏只列了部分。ruby

二、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

這裏只列了部分。服務器

3、STOMP協議分析

STOMP協議與HTTP協議很類似,它基於TCP協議,使用瞭如下命令:websocket

CONNECT
SEND
SUBSCRIBE
UNSUBSCRIBE
BEGIN
COMMIT
ABORT
ACK
NACK
DISCONNECTmarkdown

STOMP的客戶端和服務器之間的通訊是經過「幀」(Frame)實現的,每一個幀由多「行」(Line)組成。
第一行包含了命令,而後緊跟鍵值對形式的Header內容。
第二行必須是空行。
第三行開始就是Body內容,末尾都以空字符結尾。
STOMP的客戶端和服務器之間的通訊是經過MESSAGE幀、RECEIPT幀或ERROR幀實現的,它們的格式類似。異步

相關文章
相關標籤/搜索