Streaming (o Simple) Text Oriented Message Protocol (STOMP), precedentemente noto come TTMP, è un semplice protocollo di comunicazione basato sul testo (text-based), di livello applicativo nella pila ISO/OSI, progettato per lavorare con middleware orientati ai messaggi (MOM). Fornisce un wire format interoperabile che consente ai client STOMP di parlare con qualsiasi broker di messaggi che supporti il protocollo.

Descrizione Il protocollo è sostanzialmente simile a HTTP e funziona su TCP utilizzando i seguenti comandi (frame lato client):

CONNECT (dalla versione 1.0) o STOMP (dalla versione 1.2) (utilizzato dal client che deve specificare l'header host, per indicare con quale host virtuale desidera connettersi, e l'header accept-version, per indicare la versione del protocollo STOMP che supporta) SEND (utilizzato dal client che vuole comportarsi da produttore nel problema del produttore/consumatore) SUBSCRIBE (utilizzato dal client che vuole comportarsi da consumatore nel problema del produttore/consumatore, indicando la coda o il topic di destinazione verso cui vuole consumare) UNSUBSCRIBE BEGIN (per iniziare una transazione, specificando obbligatoriamente un identificatore della transazione con l'header transaction) COMMIT (per fare il commit di una transazione in corso, specificandone obbligatoriamente l'identificatore) ABORT (per fare il rollback di una transazione in corso, specificandone obbligatoriamente l'identificatore) ACK (per indicare di aver consumato un messaggio proveniente da una sottoscrizione che si è effettuata) NACK (per indicare di non aver consumato un messaggio) DISCONNECT (per disconnettersi dal server e chiudere la socket, in modo asincrono)

La comunicazione da client a server avviene attraverso un “frame” lato client tra quelli precedentemente indicati, composto da un certo numero di righe. La prima riga contiene il comando, seguito da intestazioni nella forma <chiave>: <valore> (una per riga), seguita da una riga vuota e quindi dal contenuto del corpo, che termina con un carattere null. La comunicazione da server a client avviene attraverso i frame lato server MESSAGE, RECEIPT o ERROR con un formato simile di intestazioni e contenuto del corpo. La codifica di caratteri utilizzata di default da STOMP è UTF-8.

Implementazioni Tra i prodotti MOM che supportano STOMP, vi sono: Apache ActiveMQ HornetQ Open Message Queue (OpenMQ) RabbitMQ Fuse Message Broker syslog-ng con un plugin apposito

Tra le librerie per utilizzare STOMP dal lato client, vi sono stomp.py per Python e Net::STOMP::Client per Perl.

Note

Collegamenti esterni Sito di STOMP

Categoria:Protocolli di Internet Categoria:Protocolli livello applicazione