STOMP ActiveMQ-clientcomponent: sgcMQ | eSeGeCe

STOMP ActiveMQ-client

TsgcWSPClient_STOMP_ActiveMQ is de STOMP-client die op Apache ActiveMQ is afgestemd. Hij voegt helpers voor wachtrijen en topics toe bovenop de bestemmingsnamen van ActiveMQ, getypeerde headerobjecten bij elke gebeurtenis, en een ActiveMQ_Options-eigenschap voor de broker-specifieke instellingen die duurzame abonnementen nodig hebben.

TsgcWSPClient_STOMP_ActiveMQ

Alles uit de generieke STOMP-client geldt nog steeds. Nieuw zijn de bestemmingshelpers, de ActiveMQ-gebeurtenissen en de brokeropties.

Componentklasse

TsgcWSPClient_STOMP_ActiveMQ

Specificatie

STOMP 1.0, 1.1 en 1.2

Transport

TCP (61613) of TLS (61612)

Talen

Delphi, C++ Builder

Transport: gewoon TCP en TLS. sgcMQ praat met ActiveMQ via gewoon TCP en TLS. De STOMP-over-WebSocket-connector van ActiveMQ is een WebSocket-endpoint, dus om die te bereiken is een sgcWebSockets-pakket vereist, dat de WebSocket-client levert.

Abonneer op een wachtrij en publiceer erop

Dit voorbeeld gebruikt de eigen STOMP-poort van ActiveMQ, 61613. Schakel voor een versleutelde verbinding TLS in op de drager en gebruik de stomp+ssl-connector van de broker op poort 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}");

Belangrijkste eigenschappen & methoden

De leden die je het vaakst gebruikt.

Wachtrijen

SubscribeQueue, PublishQueue en UnSubscribeQueue nemen gewoon de naam van de wachtrij en bouwen de /queue/-bestemming op, met argumenten voor durable, exclusive en de ack-modus.

Topics

SubscribeTopic, PublishTopic en UnSubscribeTopic doen hetzelfde voor /topic/-bestemmingen, en daar tellen duurzame abonnementen het zwaarst.

Generieke bestemmingen

SubscribeEx, PublishEx en UnSubscribeEx nemen een ruwe bestemmingsstring voor alles wat de benoemde helpers niet dekken.

Brokeropties

ActiveMQ_Options bevat de ActiveMQ-specifieke instellingen, waaronder de ClientId waarmee de broker een terugkerende duurzame abonnee herkent.

Duurzame abonnementen

De abonneerhelpers nemen een Durable-vlag, zodat een topic-abonnee de verbinding kan verbreken en later de berichten kan ophalen die de broker voor hem bewaarde.

Getypeerde headers

OnActiveMQMessage levert een TsgcWSActiveMQSTOMPHeadersMessage plus het bijbehorende abonnementsitem, zodat de bestemming, de message id en de ack-modus eigenschappen zijn.

Bevestiging

Geef bij het abonneren een ack-modus mee en roep daarna ACK of NACK aan met de message id. Bij ackAuto beschouwt de broker een bericht als afgeleverd zodra het verstuurd is.

Berichtopties

Elke publiceerhelper accepteert een content type, een optionele transactienaam en een object met berichtopties voor ActiveMQ-headers zoals prioriteit, persistentie en vervaltijd.

Verbinding

Client, Authentication, HeartBeat, Versions en Options gedragen zich precies zoals bij de generieke STOMP-client.

Blijf ontdekken

Online helpVolledige API-referentie en gebruikershandleiding.
Generieke STOMP-clientHet basiscomponent met de standaardset frames.
AMQP 1.0-clientActiveMQ Artemis spreekt ook AMQP 1.0.
Download de gratis proefversieDraai tegen een lokale ActiveMQ-broker.
PrijzenSingle-, Team- en Site-licenties met volledige broncode.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om aan de slag te gaan?

Download de gratis proefversie en praat vanuit Delphi of C++ Builder met ActiveMQ via STOMP.