歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> STOMP協議詳解

STOMP協議詳解

日期:2017/3/1 9:27:05   编辑:Linux編程

一、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幀實現的,它們的格式相似。

Copyright © Linux教程網 All Rights Reserved