Komponent STOMP Client: sgcMQ | eSeGeCe

STOMP Client

TsgcWSPClient_STOMP to ogólny klient STOMP 1.0, 1.1 i 1.2. STOMP jest protokołem tekstowych ramek, więc łatwo go śledzić i działa z niemal każdym brokerem, który udostępnia punkt końcowy komunikacyjny. Ten komponent pokrywa standardowy zestaw ramek, a dla RabbitMQ i ActiveMQ dostępni są potomkowie dostosowani do konkretnego brokera.

TsgcWSPClient_STOMP

Zgłoś przez Versions wersje protokołu, które akceptujesz, a broker wybierze jedną podczas wymiany CONNECT. Wynegocjowana wersja trafia do OnSTOMPConnected.

Klasa komponentu

TsgcWSPClient_STOMP

Specyfikacja

STOMP 1.0, 1.1 i 1.2

Transport

TCP (61613) lub TLS

Języki

Delphi, C++ Builder

Transport: zwykły TCP i TLS. sgcMQ łączy się przez zwykły TCP i TLS. Jeśli potrzebujesz STOMP przez WebSocket, wymaga to pakietu sgcWebSockets, który dostarcza klienta WebSocket.

Subskrybuj z identyfikatorem, a potem wysyłaj

STOMP identyfikuje subskrypcje przez wybrany przez ciebie identyfikator, ten sam, który przekazujesz do UnSubscribe i który wraca w każdej przychodzącej ramce MESSAGE.

uses
  sgcTCP_Client_WS, sgcWebSocket_Classes, sgcWebSocket_Protocols,
  sgcWebSocket_Protocol_STOMP_Client;

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

  STOMP := TsgcWSPClient_STOMP.Create(nil);
  STOMP.Client := TCPClient;
  STOMP.Versions.V1_2 := True;
  STOMP.Options.VirtualHost := '/';
  STOMP.Authentication.Enabled  := True;
  STOMP.Authentication.UserName := 'guest';
  STOMP.Authentication.Password := 'guest';
  STOMP.HeartBeat.Enabled := True;

  STOMP.OnSTOMPConnected := STOMPConnected;
  STOMP.OnSTOMPMessage   := STOMPMessage;

  TCPClient.Active := True;
end;

procedure TForm1.STOMPConnected(Connection: TsgcWSConnection;
  Version, Server, Session, HeartBeat, RawHeaders: string);
begin
  STOMP.Subscribe('sub-0', '/queue/orders');
  STOMP.Send('/queue/orders', '{"orderId":12345}');
end;

procedure TForm1.STOMPMessage(Connection: TsgcWSConnection;
  MessageText, Destination, MessageId, Subscription, ACK, ContentType,
  RawHeaders: string);
begin
  Memo1.Lines.Add(Destination + ': ' + MessageText);
  STOMP.ACK(MessageId);
end;
// include: sgcTCP_Client_WS.hpp, sgcWebSocket_Protocols.hpp,
// sgcWebSocket_Protocol_STOMP_Client.hpp

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

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

STOMP->OnSTOMPConnected = STOMPConnected;
STOMP->OnSTOMPMessage   = STOMPMessage;

TCPClient->Active = true;

// In the OnSTOMPConnected handler:
STOMP->Subscribe("sub-0", "/queue/orders");
STOMP->Send("/queue/orders", "{\"orderId\":12345}");

Kluczowe właściwości i metody

Składowe, po które sięgasz najczęściej.

Wysyłanie

Send(destination, text, contentType, transaction, customHeaders) zapisuje ramkę SEND. Trzy ostatnie argumenty są opcjonalne, więc proste wysłanie to dwa parametry.

Subskrybowanie

Subscribe(id, destination, ack, customHeaders) rejestruje subskrypcję pod wybranym przez ciebie identyfikatorem, a UnSubscribe(id) ją usuwa. Tryb potwierdzania domyślnie to ackAuto.

Potwierdzanie

ACK(id, transaction) potwierdza wiadomość, a NACK(id, transaction) ją odrzuca. Oba przyjmują identyfikator wiadomości, który przyszedł z ramką MESSAGE.

Transakcje

BeginTransaction, CommitTransaction i AbortTransaction przyjmują nazwę transakcji. Przekaż tę nazwę do Send i ACK, aby włączyć je do transakcji.

Zdarzenie wiadomości

OnSTOMPMessage przekazuje ci treść, miejsce docelowe, identyfikator wiadomości, identyfikator subskrypcji, tryb potwierdzania, typ zawartości i surowy blok nagłówków, więc nic z ramki nie ginie.

Negocjacja wersji

Versions.V1_0, V1_1 i V1_2 określają, co zgłasza klient. Wersja wybrana przez brokera jest pierwszym argumentem OnSTOMPConnected.

Potwierdzenia odbioru i błędy

OnSTOMPReceipt zgłasza się, gdy broker potwierdzi ramkę, a OnSTOMPError, gdy ją odrzuci, oba z identyfikatorem potwierdzenia i surowymi nagłówkami.

Heart-beating

HeartBeat konfiguruje interwały wychodzące i przychodzące negocjowane przy CONNECT. Ping wysyła jeden ręcznie, a OnSTOMPPing raportuje wymianę.

Opcje połączenia

Options.VirtualHost staje się nagłówkiem host w CONNECT, a Options.DisconnectTimeout ogranicza czas, przez jaki łagodne Disconnect czeka na potwierdzenie brokera.

Poznawaj dalej

Pomoc onlinePełna dokumentacja API i przewodnik użytkowania.
STOMP for RabbitMQPotomek z funkcjami pomocniczymi miejsc docelowych RabbitMQ.
STOMP for ActiveMQPotomek dostosowany do Apache ActiveMQ.
Pobierz bezpłatną wersję próbnąConnect to any STOMP-capable broker.
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 wyślij swoją pierwszą ramkę STOMP z Delphi lub C++ Builder.