STOMP 是 Streaming Text-Oriented Messaging Protocol 的缩写。
与 HTTP 协议类似,STOMP 传输内容也是可以直接阅读的,类似:
MESSAGE\n
destination:/queue/a\n
message-id: 234\n
\n
hello world\0
每一个消息被称为一个 Frame,由 type、header 和 body 三部分组成:
type:
=> MESSAGE\nheader:
=> destination:/queue/a\n
=> message-id: 234\nbdoy:
=> hello world\0
完整的 STOMP 协议规范请参考 http://stomp.codehaus.org/Protocol。
STOMP 的优势:
- 人类可以阅读、实现非常简单
- 有大量现成的客户端实现
- 越来越多的服务器和中间件支持 STOMP
- 可以通过 ActiveMQ 或 StompConnect 等使用 JMS
- 轻量级服务端实现
STOMP 的缺陷:
- 官方规范不够严谨
- 参考实现 ActiveMQ,以及其他实现官方存在 long standing 问题
- 使用 \0 作为 body 结束符,使得二进制数据的传输变得困难
- 不同实现存在差异,应用程序从一个 STOMP 服务迁移到另一个服务有潜在的问题

