STOMP RabbitMQ-clientcomponent: sgcMQ | eSeGeCe

STOMP RabbitMQ-client

TsgcWSPClient_STOMP_RabbitMQ is de STOMP-client met de bestemmingsconventies van RabbitMQ ingebouwd. RabbitMQ codeert zijn semantiek in de bestemmingsstring, dus /queue/, /topic/, /exchange/, /amq/queue/ en /temp-queue/ betekenen elk iets anders. Dit component maakt daar benoemde methoden van, en getypeerde headerrecords vervangen het parsen van ruwe strings.

TsgcWSPClient_STOMP_RabbitMQ

Alles uit de generieke STOMP-client blijft beschikbaar. Nieuw zijn de bestemmingshelpers en de RabbitMQ-gebeurtenissen met getypeerde headerobjecten.

Componentklasse

TsgcWSPClient_STOMP_RabbitMQ

Specificatie

STOMP 1.0, 1.1 en 1.2

Transport

TCP (61613) of TLS (61614)

Talen

Delphi, C++ Builder

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

Abonneer op een wachtrij, publiceer naar een exchange

Dit voorbeeld gebruikt de STOMP-plugin van RabbitMQ op zijn eigen TCP-poort, 61613. Schakel voor een versleutelde verbinding TLS in op de drager en gebruik poort 61614.

uses
  sgcTCP_Client_WS, sgcWebSocket_Classes, sgcWebSocket_Protocols,
  sgcWebSocket_Protocol_STOMP_Broker_Client,
  sgcWebSocket_Protocol_STOMP_RabbitMQ_Client;

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

  STOMP := TsgcWSPClient_STOMP_RabbitMQ.Create(nil);
  STOMP.Client := TCPClient;
  STOMP.Authentication.Enabled  := True;
  STOMP.Authentication.UserName := 'guest';
  STOMP.Authentication.Password := 'guest';

  STOMP.OnRabbitMQConnected := RabbitMQConnected;
  STOMP.OnRabbitMQMessage   := RabbitMQMessage;

  TCPClient.Active := True;
end;

procedure TForm1.RabbitMQConnected(Connection: TsgcWSConnection;
  Headers: TsgcWSRabbitMQSTOMPHeadersConnected);
begin
  // /queue/orders, durable
  STOMP.SubscribeQueue('orders');

  // /exchange/orders with routing pattern 'create'
  STOMP.SubscribeExchange('orders', 'create');
  STOMP.PublishExchange('orders', 'create', '{"id":42}');
end;

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

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

TsgcWSPClient_STOMP_RabbitMQ *STOMP =
  new TsgcWSPClient_STOMP_RabbitMQ(this);
STOMP->Client = TCPClient;
STOMP->Authentication->Enabled  = true;
STOMP->Authentication->UserName = "guest";
STOMP->Authentication->Password = "guest";

STOMP->OnRabbitMQConnected = RabbitMQConnected;
STOMP->OnRabbitMQMessage   = RabbitMQMessage;

TCPClient->Active = true;

// In the OnRabbitMQConnected handler:
STOMP->SubscribeQueue("orders");
STOMP->SubscribeExchange("orders", "create");
STOMP->PublishExchange("orders", "create", "{\"id\":42}");

Belangrijkste eigenschappen & methoden

Elke helper neemt gewoon de naam, en het component bouwt de RabbitMQ-bestemmingsstring voor je op.

Wachtrijen

SubscribeQueue, PublishQueue en UnSubscribeQueue werken met de /queue/-bestemmingen van RabbitMQ, met de vlaggen durable, auto-delete en exclusive als argumenten.

Topics

SubscribeTopic, PublishTopic en UnSubscribeTopic gebruiken de /topic/-bestemming, die via de amq.topic-exchange van RabbitMQ routeert.

Exchanges

SubscribeExchange(name, pattern) en PublishExchange(name, routingKey, text) spreken /exchange/-bestemmingen aan, waarbij een bindingspatroon bepaalt wat je ontvangt.

Externe wachtrijen

SubscribeQueueOutside en PublishQueueOutside verwijzen naar /amq/queue/, voor wachtrijen die elders zijn gedeclareerd en die de client niet opnieuw mag declareren.

Tijdelijke wachtrijen

SubscribeTemporaryQueue(queue, replyTo) en PublishTemporaryQueue implementeren het /temp-queue/-request/reply-patroon van RabbitMQ met een kortlevende antwoordbestemming.

Generieke bestemmingen

SubscribeEx, PublishEx en UnSubscribeEx nemen de ruwe bestemmingsstring wanneer je iets nodig hebt wat de benoemde helpers niet dekken.

Getypeerde headers

OnRabbitMQMessage levert een TsgcWSRabbitMQSTOMPHeadersMessage en het bijbehorende abonnementsitem, zodat de bestemming, de message id en de ack-modus eigenschappen zijn in plaats van deelstrings.

Eigen headers

Elke publiceerhelper accepteert een TStrings met extra headers, en zo stel je RabbitMQ-uitbreidingen in zoals berichtprioriteit, vervaltijd of persistentie.

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 0.9.1-clientHet eigen protocol van RabbitMQ, als STOMP geen vereiste is.
Download de gratis proefversieDraai tegen een lokale RabbitMQ-container.
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 RabbitMQ via STOMP.