Componente STOMP ActiveMQ Client: sgcMQ | eSeGeCe

STOMP ActiveMQ Client

TsgcWSPClient_STOMP_ActiveMQ es el cliente STOMP ajustado para Apache ActiveMQ. Añade ayudas para colas y temas sobre la nomenclatura de destinos de ActiveMQ, objetos de cabecera tipados en cada evento y una propiedad ActiveMQ_Options con los ajustes propios del broker que necesitan las suscripciones duraderas.

TsgcWSPClient_STOMP_ActiveMQ

Todo lo del cliente STOMP genérico sigue vigente. Lo que se añade son las ayudas de destino, los eventos con nombre de ActiveMQ y las opciones del broker.

Clase del componente

TsgcWSPClient_STOMP_ActiveMQ

Especificación

STOMP 1.0, 1.1 y 1.2

Transporte

TCP (61613) o TLS (61612)

Lenguajes

Delphi, C++ Builder

Transporte: TCP plano y TLS. sgcMQ habla con ActiveMQ por TCP plano y TLS. El conector STOMP sobre WebSocket de ActiveMQ es un endpoint WebSocket, así que llegar hasta él requiere un paquete sgcWebSockets, que es el que aporta el cliente WebSocket.

Suscríbete a una cola y publica en ella

Este ejemplo usa el puerto STOMP nativo de ActiveMQ, el 61613. Para un enlace cifrado, activa TLS en el transporte y usa el conector stomp+ssl del broker en el puerto 61612.

uses
  sgcTCP_Client_WS, sgcWebSocket_Classes, sgcWebSocket_Protocols,
  sgcWebSocket_Protocol_STOMP_Broker_Client,
  sgcWebSocket_Protocol_STOMP_ActiveMQ_Client;

var
  TCPClient: TsgcTCPClient;
  STOMP: TsgcWSPClient_STOMP_ActiveMQ;
begin
  TCPClient := TsgcTCPClient.Create(nil);
  TCPClient.Host := 'broker.example.com';
  TCPClient.Port := 61613;

  STOMP := TsgcWSPClient_STOMP_ActiveMQ.Create(nil);
  STOMP.Client := TCPClient;
  STOMP.ActiveMQ_Options.ClientId := 'delphi-consumer-1';
  STOMP.Authentication.Enabled  := True;
  STOMP.Authentication.UserName := 'admin';
  STOMP.Authentication.Password := 'admin';

  STOMP.OnActiveMQConnected := ActiveMQConnected;
  STOMP.OnActiveMQMessage   := ActiveMQMessage;

  TCPClient.Active := True;
end;

procedure TForm1.ActiveMQConnected(Connection: TsgcWSConnection;
  Headers: TsgcWSActiveMQSTOMPHeadersConnected);
begin
  STOMP.SubscribeQueue('orders');
  STOMP.PublishQueue('orders', '{"id":42}');
end;

procedure TForm1.ActiveMQMessage(Connection: TsgcWSConnection;
  MessageText: string; Headers: TsgcWSActiveMQSTOMPHeadersMessage;
  Subscription: TsgcWSBrokerSTOMPSubscriptionItem);
begin
  Memo1.Lines.Add(Headers.Destination + ': ' + MessageText);
end;
// include: sgcTCP_Client_WS.hpp, sgcWebSocket_Protocols.hpp,
// sgcWebSocket_Protocol_STOMP_ActiveMQ_Client.hpp

TsgcTCPClient *TCPClient = new TsgcTCPClient(this);
TCPClient->Host = "broker.example.com";
TCPClient->Port = 61613;

TsgcWSPClient_STOMP_ActiveMQ *STOMP =
  new TsgcWSPClient_STOMP_ActiveMQ(this);
STOMP->Client = TCPClient;
STOMP->ActiveMQ_Options->ClientId = "cbuilder-consumer-1";
STOMP->Authentication->Enabled  = true;
STOMP->Authentication->UserName = "admin";
STOMP->Authentication->Password = "admin";

STOMP->OnActiveMQConnected = ActiveMQConnected;
STOMP->OnActiveMQMessage   = ActiveMQMessage;

TCPClient->Active = true;

// In the OnActiveMQConnected handler:
STOMP->SubscribeQueue("orders");
STOMP->PublishQueue("orders", "{\"id\":42}");

Propiedades y métodos principales

Los miembros que vas a usar con más frecuencia.

Colas

SubscribeQueue, PublishQueue y UnSubscribeQueue reciben el nombre de la cola a secas y construyen el destino /queue/, con argumentos de durabilidad, exclusividad y modo de acuse.

Temas

SubscribeTopic, PublishTopic y UnSubscribeTopic hacen lo mismo con los destinos /topic/, que es donde más importan las suscripciones duraderas.

Destinos genéricos

SubscribeEx, PublishEx y UnSubscribeEx reciben una cadena de destino en bruto para todo lo que las ayudas con nombre no cubren.

Opciones del broker

ActiveMQ_Options reúne los ajustes propios de ActiveMQ, incluido el ClientId con el que el broker reconoce a un suscriptor duradero que vuelve.

Suscripciones duraderas

Las ayudas de suscripción aceptan un indicador Durable, así que un suscriptor de un tema puede desconectarse y recoger más tarde los mensajes que el broker le guardó.

Cabeceras tipadas

OnActiveMQMessage te entrega un TsgcWSActiveMQSTOMPHeadersMessage más el elemento de suscripción correspondiente, así que el destino, el id de mensaje y el modo de acuse son propiedades.

Acuse de recibo

Indica un modo de acuse al suscribirte y después llama a ACK o a NACK con el id del mensaje. En ackAuto el broker da un mensaje por entregado en cuanto lo envía.

Opciones de mensaje

Todas las ayudas de publicación aceptan un tipo de contenido, un nombre de transacción opcional y un objeto de opciones de mensaje para las cabeceras de ActiveMQ como la prioridad, la persistencia y la caducidad.

Conexión

Client, Authentication, HeartBeat, Versions y Options se comportan exactamente igual que en el cliente STOMP genérico.

Sigue explorando

Ayuda en líneaReferencia completa de la API y guía de uso.
Cliente STOMP genéricoEl componente base con el conjunto estándar de tramas.
AMQP 1.0 ClientActiveMQ Artemis también habla AMQP 1.0.
Descargar prueba gratuitaPruébalo contra un broker ActiveMQ local.
PreciosLicencias Single, Team y Site con código fuente completo.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

¿Listo para empezar?

Descarga la prueba gratuita y habla con ActiveMQ por STOMP desde Delphi o C++ Builder.