티스토리 뷰

https://stomp.github.io/index.html

STOMP 란

STOMP 는 Simple/Stream Text Oriented Messaging Protocol 약자이다. 말 그대로 간단한 문자 기반 메세징 프로토콜이다. 프로토콜이란 원거리에서 메세지를 서로 주고 받을때 정의된 양식 규칙 체계이다. 즉 STOMP는 텍스트 송 수신을 위한 미리 정의된 어떠한 규칙이다.
STOMP 스펙에 정의한 규칙만 잘 지키면 여러 언어, 여러 플랫폼간 메세지를 상호 운영할 수 있다.

Easy 

AMQP 나 MQTT 와 같은 메세지 전송을 위한 다른 프로토콜은 존재한다. 하지만 STOMP 가 그것들과 다른점은 binary 기반이 아닌 텍스트 기만 프로토콜이라는 점이다. 그렇기 때문에 개발자가 읽기 쉽고 사용하기에 좋다. 이런점은 마치 HTTP 와 유사한 점이다. 이런 부분때문에 여러 언어, 호스트, 런타임환경에서의 클라리언트를 구현을 몇 시간이면 가능했다고 한다. 

TCP 위에서 STOMP에서 정의한 Frame 구조에서 Client Server 간 상호 메세지를 전달한다. Frame 은 몇 개의 텍스트 라인으로 지정된 구조인데 첫번째 라인은 텍스트 이고 이후 key:value 형태로 header 정보를 포함한다. 이후 빈 라인 추가 후 Payload 가 존재한다. 이 구조를 보면 HTTP 요청과 왜 유사한지 알 수 있다. 아래는 Frame 의 예시이다.

COMMAND
header1:value1
header2:value2

Body^@

프로토콜의 COMMAND 아래와 같고 상세한 구현 내용은 아래 STOMP 공식 페이지에 가면 확인할 수있다. 아래 구현 스펙을 이해하면 누구나 어떤 언어로 클라이언트 구현이 가능하다. 

  • CONNECT
  • SEND
  • SUBSCRIBE
  • UNSUBSCRIBE
  • BEGIN
  • COMMIT
  • ABORT
  • ACK
  • NACK
  • DISCONNECT

stomp.github.io/stomp-specification-1.2.html#STOMP_Frames

구현체

STOMP 는 현재 여러 서버/클라이언트 구현체가 있다. 서버로는 요즘 많이 사용되는 RabbitMQ, ActiveMQ 같은 메세지 큐등이 있고 Client 로는 java, php, python, Go, javascript 등 많은 언어에서 구현하고 있다. 아래는 그 목록이다.

Server

Apache ActiveMQ

the most popular and powerful open source messaging and Integration Patterns server 1.0 1.1

Apache ActiveMQ Artemis

Apache ActiveMQ Artemis has a proven non blocking architecture. It delivers outstanding performance. 1.0 1.1 1.2

Apache Apollo

a redesigned version of ActiveMQ 1.0 1.1 1.2

CoilMQ

a lightweight pure Python STOMP broker inspired by StompServer 1.0

Gozirra

a lightweight Java STOMP broker 1.0

HornetQ

puts the buzz in messaging 1.0

MorbidQ

a STOMP publish/subscribe server with absolutely no potential to cluster 1.0

RabbitMQ

an Erlang-based, multi-protocol broker with full support for STOMP via a plugin 1.0 1.1 1.2

Sprinkle

written in Python and runs on Unix type platforms 1.0

Stampy

a Java implementation of the STOMP 1.2 specification 1.2

StompConnect

provides a bridge to any other JMS provider 1.0

StompServer

a lightweight pure Ruby STOMP server 1.0

Client

activemessaging

Ruby an attempt to bring the simplicity and elegance of Rails development to the world of messaging 1.0

AnyEvent::STOMP

Perl a lightweight event-driven STOMP client 1.0

Apache CMS

C++ is a JMS-like API for C++ 1.0

Apache NMS

C# and .Net a JMS-like API for .Net 1.0

as3-stomp

Flash an actionscript 3 implementation of the STOMP protocol 1.0

delphistompclient

Delphi and FreePascal a STOMP client for Embarcadero Delphi and FreePascal 1.0

dstomp

Dynamic C a STOMP client library written in Dynamic C for Rabbit 1.0

Gozirra

Java a lightweight implementation of the STOMP specification 1.0

hxStomp

Haxe a TCP socket-based STOMP protocol client library written for the Haxe language 1.0

libstomp

C an APR based C library 1.0

Net::Stomp

Perl a Streaming Text Orientated Messaging Protocol client 1.0

Net::STOMP::Client

Perl STOMP object oriented client module 1.0 1.1 1.2

objc-stomp

Objective-C a simple STOMP client based on AsynSocket 1.0

POE::Component::Client::Stomp

Perl a Perl extension for the POE Environment 1.0

onstomp

Ruby client library for message passing with brokers that support the STOMP protocol 1.0 1.1

Public.Protocols.Stomp

Pike Public.Protocols.Stomp 1.0

pyactivemq

Python module for communicating with the ActiveMQ message broker 1.0

React/STOMP

PHP STOMP bindings for React 1.1

simplisticstompclient

PHP a simpler STOMP client for PHP 1.0

Stampy

Java a Java implementation of the STOMP 1.2 specification 1.2

stomp

PHP STOMP client extension 1.0

stomp

Ruby client for the STOMP messaging protocol 1.0 1.1

stomper

Python a client implementation of the STOMP protocol 1.0

stomp.erl

Erlang a STOMP client for Erlang 1.0

stompest

Python a full-featured STOMP implementation for Python including both synchronous and asynchronous clients 1.0 1.1 1.2

StompKit

Objective-C modern event-driven Objective-C library for STOMP 1.2

stompy

Python implementation of the STOMP protocol in Python 1.0

stompngo

Go a STOMP 1.1+ Client Package 1.0 1.1 1.2

stomp-php

PHP the FuseSource PHP client implementation 1.0

stomp.py

Python a Python client library which can also be run as a standalone, command-line client for testing. 1.0 1.1 1.2

stomp.js

JavaScript is a JavaScript library for Web browsers using STOMP Over HTML Web Sockets 1.0 1.1

tStomp

TCL a STOMP Implementation for TCL 1.1

Zend_Queue

PHP for Zend PHP clients 1.0

참고

stomp.github.io/index.html

iotbyhvm.ooo/stomp/

medium.com/@bilal.rifas/stomp-protocol-dc54813c3b95

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크