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.

¿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;

¿Listo para empezar con STOMP?

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