Komponent STOMP RabbitMQ Client: sgcMQ | eSeGeCe

STOMP RabbitMQ Client

TsgcWSPClient_STOMP_RabbitMQ to klient STOMP z wbudowanymi konwencjami adresowania RabbitMQ. RabbitMQ koduje swoją semantykę w ciągu miejsca docelowego, więc /queue/, /topic/, /exchange/, /amq/queue/ i /temp-queue/ znaczą coś innego. Ten komponent zamienia je w nazwane metody, a typowane rekordy nagłówków zastępują parsowanie surowych ciągów.

TsgcWSPClient_STOMP_RabbitMQ

Wszystko z ogólnego klienta STOMP pozostaje dostępne. Nowością są funkcje pomocnicze miejsc docelowych oraz zdarzenia nazwane po RabbitMQ z typowanymi obiektami nagłówków.

Klasa komponentu

TsgcWSPClient_STOMP_RabbitMQ

Specyfikacja

STOMP 1.0, 1.1 i 1.2

Transport

TCP (61613) lub TLS (61614)

Języki

Delphi, C++ Builder

Transport: zwykły TCP i TLS. sgcMQ komunikuje się z wtyczką STOMP RabbitMQ przez zwykły TCP i TLS. Wtyczka Web-STOMP w RabbitMQ jest punktem końcowym WebSocket, więc dotarcie do niej wymaga pakietu sgcWebSockets, który dostarcza klienta WebSocket.

Subskrybuj kolejkę, publikuj do wymiany

Ten przykład używa wtyczki STOMP RabbitMQ na jej natywnym porcie TCP 61613. Aby uzyskać szyfrowane połączenie, włącz TLS na nośniku i użyj portu 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}");

Kluczowe właściwości i metody

Każda funkcja pomocnicza przyjmuje samą nazwę, a komponent buduje za ciebie ciąg miejsca docelowego RabbitMQ.

Kolejki

SubscribeQueue, PublishQueue i UnSubscribeQueue działają z miejscami docelowymi /queue/ RabbitMQ, z flagami durable, auto-delete i exclusive jako argumentami.

Tematy

SubscribeTopic, PublishTopic i UnSubscribeTopic używają miejsca docelowego /topic/, które kieruje ruch przez wymianę amq.topic RabbitMQ.

Wymiany

SubscribeExchange(name, pattern) i PublishExchange(name, routingKey, text) adresują miejsca docelowe /exchange/, gdzie wzorzec powiązania wybiera to, co odbierasz.

Kolejki zewnętrzne

SubscribeQueueOutside i PublishQueueOutside odwzorowują /amq/queue/, dla kolejek zadeklarowanych gdzie indziej, których klient nie może deklarować ponownie.

Kolejki tymczasowe

SubscribeTemporaryQueue(queue, replyTo) i PublishTemporaryQueue implementują wzorzec żądanie/odpowiedź /temp-queue/ RabbitMQ z krótko żyjącym miejscem docelowym odpowiedzi.

Miejsca docelowe ogólne

SubscribeEx, PublishEx i UnSubscribeEx przyjmują surowy ciąg miejsca docelowego, gdy potrzebujesz czegoś, czego nazwane funkcje pomocnicze nie obejmują.

Nagłówki typowane

OnRabbitMQMessage dostarcza TsgcWSRabbitMQSTOMPHeadersMessage oraz pasujący element subskrypcji, więc miejsce docelowe, identyfikator wiadomości i tryb potwierdzania są właściwościami, a nie fragmentami ciągów.

Nagłówki własne

Każda funkcja pomocnicza publikowania przyjmuje TStrings z dodatkowymi nagłówkami, i tak właśnie ustawiasz rozszerzenia RabbitMQ, takie jak priorytet wiadomości, wygaśnięcie czy trwałość.

Połączenie

Client, Authentication, HeartBeat, Versions i Options zachowują się dokładnie tak, jak w ogólnym kliencie STOMP.

Poznawaj dalej

Pomoc onlinePełna dokumentacja API i przewodnik użytkowania.
Generic STOMP ClientKomponent bazowy ze standardowym zestawem ramek.
AMQP 0.9.1 ClientRabbitMQ's native protocol, if STOMP is not a requirement.
Pobierz bezpłatną wersję próbnąUruchom wobec lokalnego kontenera RabbitMQ.
CennikLicencje Single, Team i Site z pełnym kodem źródłowym.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Gotowy, aby zacząć?

Pobierz bezpłatną wersję próbną i porozmawiaj z RabbitMQ przez STOMP z Delphi lub C++ Builder.