Composant client STOMP ActiveMQ : sgcMQ | eSeGeCe

Client STOMP ActiveMQ

TsgcWSPClient_STOMP_ActiveMQ est le client STOMP réglé pour Apache ActiveMQ. Il ajoute des utilitaires de files d'attente et de topics par-dessus le nommage des destinations d'ActiveMQ, des objets d'en-têtes typés sur chaque événement, et une propriété ActiveMQ_Options pour les réglages propres au broker dont ont besoin les abonnements durables.

TsgcWSPClient_STOMP_ActiveMQ

Tout ce que propose le client STOMP générique reste valable. Les ajouts sont les utilitaires de destination, les événements nommés d'après ActiveMQ et les options du broker.

Classe du composant

TsgcWSPClient_STOMP_ActiveMQ

Spécification

STOMP 1.0, 1.1 et 1.2

Transport

TCP (61613) ou TLS (61612)

Langages

Delphi, C++ Builder

Transport : TCP simple et TLS. sgcMQ dialogue avec ActiveMQ en TCP simple et en TLS. Le connecteur STOMP-sur-WebSocket d'ActiveMQ est un endpoint WebSocket, l'atteindre nécessite donc un package sgcWebSockets, qui fournit le client WebSocket.

S'abonner à une file, y publier

Cet exemple utilise le port STOMP natif d'ActiveMQ, 61613. Pour une liaison chiffrée, active TLS sur le support de transport et utilise le connecteur stomp+ssl du broker sur le port 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}");

Propriétés et méthodes clés

Les membres que tu utilises le plus souvent.

Files d'attente

SubscribeQueue, PublishQueue et UnSubscribeQueue prennent le nom simple de la file et construisent la destination /queue/, avec les arguments durable, exclusive et mode d'acquittement.

Topics

SubscribeTopic, PublishTopic et UnSubscribeTopic font de même pour les destinations /topic/, là où les abonnements durables comptent le plus.

Destinations génériques

SubscribeEx, PublishEx et UnSubscribeEx prennent une chaîne de destination brute pour tout ce que les utilitaires nommés ne couvrent pas.

Options du broker

ActiveMQ_Options porte les réglages propres à ActiveMQ, dont le ClientId que le broker utilise pour reconnaître un abonné durable qui revient.

Abonnements durables

Les utilitaires d'abonnement prennent un indicateur Durable, un abonné à un topic peut donc se déconnecter puis récupérer plus tard les messages que le broker a gardés pour lui.

En-têtes typés

OnActiveMQMessage délivre un TsgcWSActiveMQSTOMPHeadersMessage plus l'élément d'abonnement correspondant, si bien que la destination, l'identifiant de message et le mode d'acquittement sont des propriétés.

Acquittement

Passe un mode d'acquittement à l'abonnement, puis appelle ACK ou NACK avec l'identifiant du message. En ackAuto, le broker considère un message comme livré dès qu'il est envoyé.

Options de message

Chaque utilitaire de publication accepte un type de contenu, un nom de transaction facultatif et un objet d'options de message pour les en-têtes ActiveMQ comme la priorité, la persistance et l'expiration.

Connexion

Client, Authentication, HeartBeat, Versions et Options se comportent exactement comme sur le client STOMP générique.

Pour aller plus loin

Aide en ligneRéférence complète de l'API et guide d'utilisation.
Client STOMP génériqueLe composant de base avec le jeu de trames standard.
Client AMQP 1.0ActiveMQ Artemis parle aussi AMQP 1.0.
Télécharger l'essai gratuitFais tourner le client contre un broker ActiveMQ local.
TarifsLicences Single, Team et Site avec le code source complet.
Meilleur rapport qualité-prix : All-AccessTous les produits eSeGeCe, Support Premium inclus, à partir de €1,059/an.
Voir les tarifs All-Access

Prêt à te lancer ?

Télécharge l'essai gratuit et dialogue avec ActiveMQ en STOMP depuis Delphi ou C++ Builder.