Protocolo STOMP

Simple Text Oriented Messaging Protocol para mensajería interoperable. Conecta a RabbitMQ, ActiveMQ y a cualquier bróker compatible con STOMP desde tus aplicaciones Delphi.

Respuesta rápida: sgcWebSockets añade mensajería STOMP a TsgcWebSocketClient a través de su propiedad STOMP, para que las aplicaciones Delphi y C++ Builder puedan suscribirse, enviar, ejecutar transacciones y negociar heart-beats sobre WebSocket contra RabbitMQ, ActiveMQ o cualquier bróker STOMP.

¿Qué es STOMP?

STOMP ofrece un protocolo de mensajería sencillo basado en texto que permite la interoperabilidad entre distintos brókers de mensajería e implementaciones cliente.

Mensajería sencilla e interoperable

STOMP está diseñado para ser sencillo y fácil de implementar. A diferencia de los protocolos binarios, STOMP utiliza un formato de trama basado en texto, legible y fácil de depurar. Define un conjunto reducido de comandos — CONNECT, SEND, SUBSCRIBE, UNSUBSCRIBE, ACK, NACK, BEGIN, COMMIT, ABORT y DISCONNECT — que cubren todos los patrones de mensajería habituales. sgcWebSockets implementa el protocolo STOMP sobre conexiones WebSocket, permitiendo que clientes nativos y de navegador se comuniquen con brókers de mensajería empresariales.

  • Protocolo basado en texto legible
  • Funciona con cualquier bróker compatible con STOMP
  • Conjunto de comandos sencillo para un desarrollo rápido
  • Se ejecuta sobre WebSocket para compatibilidad con navegadores
SEND destination:/queue CLIENT BROKER

Características de STOMP

Mensajería empresarial simplificada con un protocolo limpio basado en texto.

Protocolo basado en texto

Las tramas legibles facilitan la depuración y el desarrollo. Cada trama se compone de un comando, cabeceras y un cuerpo opcional.

RabbitMQ y ActiveMQ

Totalmente compatible con los brókers de mensajería RabbitMQ y ActiveMQ, proporcionando acceso a infraestructura de mensajería empresarial.

CONNECT/SEND/SUBSCRIBE

Conjunto de comandos claro que cubre la gestión de conexiones, envío de mensajes y suscripción a topics con una semántica clara.

Confirmación de recepción

Solicita confirmaciones de recepción al bróker para asegurar que tus mensajes han sido recibidos y procesados correctamente.

Soporte de transacciones

Agrupa varias operaciones SEND y ACK en transacciones atómicas con los comandos BEGIN, COMMIT y ABORT.

Negociación de heart-beat

Mecanismo automático de keep-alive para detectar conexiones rotas y mantener sesiones persistentes con el bróker.

Casos de uso de STOMP

Escenarios de mensajería empresarial donde STOMP ofrece comunicación sencilla y fiable.

Cola de mensajes empresarial

Conecta aplicaciones Delphi a colas de mensajes empresariales para una comunicación fiable y asíncrona entre sistemas.

Comunicación entre microservicios

Habilita una comunicación poco acoplada entre microservicios mediante mensajería basada en topics y patrones de cola.

Arquitecturas orientadas a eventos

Construye sistemas orientados a eventos donde los componentes reaccionan a eventos publicados a través de brókers de mensajería STOMP.

Mensajería multiplataforma

Conecta aplicaciones escritas en distintos lenguajes y frameworks a través de un protocolo común.

Ejemplo Delphi STOMP

Conecta a un bróker STOMP, suscríbete a un destino y envía mensajes.

uses
  sgcWebSocket_Client, sgcWebSocket_Types;

var
  WSClient: TsgcWebSocketClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'broker.example.com';
  WSClient.Port := 15674;
  WSClient.Specifications.RFC6455.Protocol := 'stomp';

  // Configure STOMP protocol
  WSClient.STOMP.Enabled := True;
  WSClient.STOMP.Authentication.Username := 'guest';
  WSClient.STOMP.Authentication.Password := 'guest';
  WSClient.STOMP.VirtualHost := '/';
  WSClient.STOMP.HeartBeat.Outgoing := 10000;
  WSClient.STOMP.HeartBeat.Incoming := 10000;

  // Set up event handlers
  WSClient.OnSTOMPConnected := OnSTOMPConnected;
  WSClient.OnSTOMPMessage := OnSTOMPMessage;
  WSClient.OnSTOMPReceipt := OnSTOMPReceipt;
end;

procedure TForm1.ButtonConnectClick(Sender: TObject);
begin
  WSClient.Active := True;
end;

procedure TForm1.OnSTOMPConnected(Sender: TObject);
begin
  // Subscribe to a queue
  WSClient.STOMP.Subscribe('/queue/orders');
end;

procedure TForm1.OnSTOMPMessage(Sender: TObject;
  aDestination, aBody: string);
begin
  // Process incoming messages
  Memo1.Lines.Add(aDestination + ': ' + aBody);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  // Send a message to a destination
  WSClient.STOMP.Send('/queue/orders',
    '{"orderId": 12345, "status": "new"}');
end;

Preguntas frecuentes sobre STOMP

Preguntas habituales sobre la conexión de aplicaciones Delphi y C++ Builder a brókers STOMP.

Coloca un TsgcWebSocketClient, establece su Host y Port, define Specifications.RFC6455.Protocol como 'stomp', y luego habilita la propiedad STOMP. Tras conectar, llamas a STOMP.Subscribe para recibir frames y a STOMP.Send para publicar en un destino. El componente implementa los comandos STOMP CONNECT, SEND, SUBSCRIBE, ACK, NACK, BEGIN, COMMIT, ABORT y DISCONNECT.
El cliente funciona con RabbitMQ y ActiveMQ, y con cualquier bróker de mensajería compatible con STOMP. Como STOMP es un protocolo de cable sencillo y basado en texto, el mismo componente se comunica con cualquier servidor que implemente la especificación STOMP.
Sí. Puedes agrupar operaciones SEND y ACK en transacciones atómicas con BEGIN, COMMIT y ABORT, solicitar confirmaciones de recepción al bróker, y configurar la negociación de heart-beats mediante STOMP.HeartBeat.Outgoing y STOMP.HeartBeat.Incoming para mantener viva la conexión y detectar sesiones caídas. STOMP se ejecuta sobre el transporte WebSocket para mensajería compatible con navegadores.
sgcWebSockets es compatible desde Delphi 7 hasta la última versión de Delphi y las versiones de C++ Builder correspondientes, en Windows, macOS, Linux, iOS y Android. Descarga la prueba gratuita para evaluar el cliente STOMP en tu propio proyecto.

¿Listo para empezar con STOMP?

Descarga la prueba gratuita y conecta a brókers de mensajería empresariales en minutos.