网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

STOMP协议是什么?

更新时间:2026年03月27日   作者:spoto   标签(Tag):

STOMP就是如此。简单文本导向的通信协议,以前被称为TTMP它提供了一种可互操作的通信格式,使得STOMP客户端能够与非任何消息代理进行异步通信。该协议与HTTP类似,通过TCP进行传输,所使用的命令则包括……连接、发送、订阅、取消订阅、开始、提交、中止、确认、拒绝、断开连接。

STOMP是一种简单且易于翻译的协议。许多开发者仅用短短几步时间就能编写出STOMP客户端程序。小时他们可以使用自己的特定语言、运行时或平台来与 STOMP 网络进行通信。因此,如果我们所选择的语言/运行时并不提供足够好的 STOMP 客户端的话,我们仍然可以轻松地自行编写这样的客户端。

STOMP客户端命令

在STOMP协议中,客户端与服务器之间的通信是通过“帧”来进行的。每一帧由多行组成。第一行包含命令,接下来是以<key>:<value>形式表示的头部信息(每行一个),然后是空行,最后是主体内容,最后以空字符结束。服务器与客户端之间的通信则通过MESSAGE、RECEIPT或ERROR等帧进行,这些帧的头部信息和主体内容的格式也与此类似。

连接

连接
用户名:<userName>
密码:<密码>

发送

目的地:/URL/地址
收据:消息-1
你好,世界

订阅/加入

目的地:url/地址
确认:客户

取消订阅

取消订阅
目的地:url/地址

开始

开始
交易信息:<transaction-ID>

提交/锁定

提交/锁定
交易信息:<transaction-ID>

中止/放弃

中止/放弃
交易:<交易ID>

ACK


交易信息:<transaction-ID>
消息ID:<消息ID>

NACK

NACK
交易信息:<transaction-ID>
消息ID:<消息ID>

断开连接

断开连接

STOMP服务器命令

服务器偶尔会向客户端发送一些帧数据(除了最初的那些数据之外)。连接在一起这些框架可以是以下几种中的一种:

信息/消息

信息/消息
交易:<交易ID>
目的地:/url/address
消息ID:<消息ID>
内容类型:文本/普通文本
你好,世界

接收

收据/发票
接收者ID:<消息ID> 错误
接收者ID:<消息ID>
内容类型:文本/普通文字
内容长度:565
消息:收到损坏的帧。
信息:
-----
信息/消息
目的地:/url/地址
接收信息:<message-ID>
你好,世界啊!
-----
该文件中没有包含必需的“目标头”信息。
用于消息的传播。

实现方式/具体实施方式

以下是STOMP协议的实现方式。

STOMP服务器

以下是一些支持STOMP协议的消息服务器:

  • Apache ActiveMQ
  • Fuse消息代理
  • 开放消息队列(OpenMQ)
  • RabbitMQ
  • 通过 STOMP 目标插件,syslog-ng 可以实现其目标功能。

STOMP客户端

  • activemessaging, 直接介入/处理Ruby
  • Apache CMS 在…中C++
  • 戈齐拉和斯坦皮在一起Java
  • Stompy、pyactivemq、stomper、stompest以及stomp.py等工具。Python
  • stomp-php、Zend_Queue、stomp…PHP
  • Stompngo inGo
  • AnyEvent::STOMP、Net::Stomp、Net::STOMP::Client、POE::Component::Client::StompPerl

STOMP还得到了Spring框架的支持,其相关模块也处于活跃的开发状态。org.springframework:spring-websocket

STOMP发布了

该规范的最新版本可以在以下链接中找到:

  1. STOMP1.2发布日期:2012年10月22日

该规范的旧版本可以在以下地址找到:

  1. STOMP1.1
  2. STOMP1.0

结论

STOMP既简单又轻量级,拥有丰富的语言绑定功能。它允许你通过WebSockets在浏览器中发送消息。这为你带来了许多有趣的可能性——比如能够实时地将各种信息更新到浏览器、移动应用或机器上。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料