Blog de Programación sobre Java y Javascript
 
STOMP: Tecnologías de Protocolos de comunicación: (parte 1)

STOMP: Tecnologías de Protocolos de comunicación: (parte 1)

Qué es STOMP?

El Protocolo de mensajería orientado a texto simple: STOMP de las siglas Simple (or Streaming) Text Orientated Messaging Protocol, es un protocolo de mensajería ligero que define una forma sencilla para que los clientes se comuniquen con los intermediarios de mensajes. Su objetivo es proporcionar un formato de conexión interoperable que permita a los clientes de STOMP comunicarse con cualquier intermediario de mensajes (puede ser texto plano, yaml, json, xml, etc) que admita STOMP como protocolo de comunicación.

Funciona con una variedad de transportes de mensajes, incluidos los sockets TCP, WebSockets y otros protocolos de transferencia. Utiliza un modelo de comunicación de marco simple en el que cada marco consta de un comando, un conjunto de encabezados y un cuerpo. Los comandos incluyen CONNECT, BEGIN, COMMIT, SUBSCRIBE, ABORT, UNSUBSCRIBE, SEND, ACK, DISCONNECT, y NACK.

STOMP se usa a menudo junto con intermediarios de mensajes como Apache ActiveMQ, RabbitMQ y otros. Por lo general, se usa en escenarios de mensajería donde se requiere una mensajería ligera, como por ejemplo en aplicaciones de chat, sistemas de Internet de las cosas (IoT) y otros casos de uso similares.

Stomp
Imagen del flujo de STOMP junto con Websocket

Características de STOMP

El protocolo STOMP tiene varias características que lo convierten en una opción popular para mensajes ligeros:

  • Modelo de comunicación simple basado en marcos: utiliza un modelo de comunicación simple basado en marcos en el que cada marco consta de un comando, un conjunto de encabezados y un cuerpo. Este modelo simplifica la implementación y el uso.
  • Independiente del protocolo de transporte: está diseñado para ser independiente del protocolo de transporte, lo que significa que puede funcionar con una variedad de métodos de transporte de mensajes, incluidos sockets TCP, WebSockets y otros protocolos de transporte.
  • Amplia selección de librerias de clientes:  ofrece bibliotecas de clientes en una variedad de lenguajes de programación, incluidos Java, Python, Ruby, .NET y otros. Esto simplifica el uso de STOMP en varias aplicaciones.
  • Autenticación y autorización: admite autenticación y autorización, lo que permite a los intermediarios de mensajes autenticar a los clientes y permitirles acceder a destinos específicos.
  • Confirmación de mensajes: admite la confirmación de mensajes, lo que permite a los clientes confirmar la recepción de mensajes del intermediario de mensajes.
  • Filtrado de mensajes: admite el filtrado de mensajes, lo que permite a los clientes suscribirse a destinos de noticias específicos en función de los titulares u otros criterios.
  • Soporte transaccional: admite mensajería transaccional que permite a los clientes enviar y recibir mensajes en el contexto de una transacción.

Ventajas y Desventajas

Ventajas:

  • Ligero: STOMP es un protocolo liviano que es fácil de implementar y usar.
  • Independiente del transporte: puede operar sobre una variedad de transportes de mensajería, lo que la convierte en una solución de mensajería versátil.
  • Fácil de usar: el modelo de comunicación simple basado en frames de STOMP hace que sea fácil de entender y usar para los desarrolladores.
  • Ampliamente compatible: tiene bibliotecas de clientes disponibles en muchos lenguajes de programación, lo que facilita su uso en una variedad de aplicaciones.
  • Confirmación de mensajes: admite la confirmación de mensajes (ack), lo que garantiza una entrega de mensajes confiable.

Desventajas:

  • Funcionalidad limitada: STOMP es un protocolo de mensajería simple que carece de algunas de las características más avanzadas de otros protocolos de mensajería.
  • Sin persistencia de mensajes integrada: STOMP no tiene soporte integrado para la persistencia de mensajes, lo que puede ser una desventaja en algunos escenarios de mensajería.
  • Escalabilidad limitada: STOMP puede no ser adecuado para sistemas de mensajería muy grandes debido a su escalabilidad limitada.
  • Problemas de seguridad: dado que STOMP no proporciona cifrado integrado, es posible que no sea adecuado para su uso en aplicaciones que requieren altos niveles de seguridad.
  • No apto para mensajería en tiempo real: STOMP no es apto para escenarios de mensajería en tiempo real que requieren baja latencia y alto rendimiento.

Diferencia con WebSocket

STOMP y WebSocket son dos protocolos diferentes que se utilizan comúnmente para la comunicación en aplicaciones web. A continuación, se presentan algunas de las principales diferencias entre STOMP y WebSocket:

  1. Funcionamiento: STOMP es un protocolo de mensajería simple que se utiliza para enviar y recibir mensajes entre aplicaciones. WebSocket, por otro lado, es un protocolo de comunicación bidireccional en tiempo real que permite a los servidores enviar mensajes a los clientes y viceversa.
  2. Transporte: STOMP se puede utilizar sobre varios transportes, incluyendo TCP y HTTP, mientras que WebSocket utiliza un solo transporte basado en TCP.
  3. Compatibilidad con lenguajes: STOMP tiene bibliotecas de clientes disponibles en varios lenguajes de programación, incluyendo Java, Python, Ruby y .NET, mientras que WebSocket tiene bibliotecas disponibles en lenguajes de programación similares.
  4. Mensajes: STOMP utiliza un formato de mensaje de comando, encabezados y cuerpo, mientras que WebSocket no tiene un formato de mensaje definido.
  5. Características: STOMP incluye características como autenticación, autorización y filtrado de mensajes, mientras que WebSocket no tiene estas características integradas.
  6. Compatibilidad con navegadores: WebSocket es compatible con la mayoría de los navegadores modernos, mientras que STOMP no es compatible con los navegadores por sí solo.

Diferencia con RSocket

A continuación, se presentan algunas de las principales diferencias con rSocket:

  1. Funcionamiento: STOMP es un protocolo de mensajería simple que se utiliza para enviar y recibir mensajes entre aplicaciones, mientras que rSocket es un protocolo de comunicación en tiempo real que permite a las aplicaciones enviar y recibir mensajes bidireccionales con bajo costo de latencia.
  2. Transporte: Se puede utilizar sobre varios transportes, incluyendo TCP y HTTP, mientras que rSocket utiliza un solo transporte basado en TCP.
  3. Compatibilidad con lenguajes: STOMP tiene bibliotecas de clientes disponibles en varios lenguajes de programación, mientras que rSocket tiene bibliotecas disponibles en lenguajes de programación similares.
  4. Mensajes: STOMP utiliza un formato de mensaje de comando, encabezados y cuerpo, mientras que rSocket tiene un formato de mensaje binario que utiliza el formato de serialización que elijas.
  5. Características: STOMP incluye características como autenticación, autorización y filtrado de mensajes, mientras que rSocket tiene características como la retransmisión de mensajes, el control de congestión y la resolución de balanceo de carga incorporados.
  6. Compatibilidad con navegadores: Tanto STOMP como rSocket son compatibles con navegadores web.

Comments are closed.