Componente STOMP RabbitMQ Client: sgcMQ | eSeGeCe

STOMP RabbitMQ Client

TsgcWSPClient_STOMP_RabbitMQ è il client STOMP con le convenzioni di destinazione di RabbitMQ già integrate. RabbitMQ codifica la propria semantica nella stringa di destinazione, quindi /queue/, /topic/, /exchange/, /amq/queue/ e /temp-queue/ significano ciascuno qualcosa di diverso. Questo componente le trasforma in metodi con un nome, e record di header tipizzati sostituiscono l'analisi di stringhe grezze.

TsgcWSPClient_STOMP_RabbitMQ

Tutto quello che c'è nel client STOMP generico resta disponibile. Le aggiunte sono le funzioni di supporto per le destinazioni e gli eventi con nome RabbitMQ e oggetti header tipizzati.

Classe del componente

TsgcWSPClient_STOMP_RabbitMQ

Specifica

STOMP 1.0, 1.1 e 1.2

Trasporto

TCP (61613) o TLS (61614)

Linguaggi

Delphi, C++ Builder

Trasporto: TCP semplice e TLS. sgcMQ dialoga con il plugin STOMP di RabbitMQ tramite TCP semplice e TLS. Il plugin Web-STOMP di RabbitMQ è un endpoint WebSocket, quindi per raggiungerlo serve un package sgcWebSockets, che fornisce il client WebSocket.

Sottoscrivi una coda, pubblica su un exchange

Questo esempio usa il plugin STOMP di RabbitMQ sulla sua porta TCP nativa, la 61613. Per un collegamento cifrato, attiva TLS sul vettore e usa la porta 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}");

Proprietà e metodi principali

Ogni funzione di supporto accetta il nome semplice, e il componente costruisce per te la stringa di destinazione di RabbitMQ.

Code

SubscribeQueue, PublishQueue e UnSubscribeQueue lavorano con le destinazioni /queue/ di RabbitMQ, con i flag durable, auto-delete ed exclusive come argomenti.

Topic

SubscribeTopic, PublishTopic e UnSubscribeTopic usano la destinazione /topic/, che instrada attraverso l'exchange amq.topic di RabbitMQ.

Exchange

SubscribeExchange(name, pattern) e PublishExchange(name, routingKey, text) indirizzano le destinazioni /exchange/, dove un pattern di binding seleziona quello che ricevi.

Code esterne

SubscribeQueueOutside e PublishQueueOutside corrispondono a /amq/queue/, per le code dichiarate altrove e che il client non deve ridichiarare.

Code temporanee

SubscribeTemporaryQueue(queue, replyTo) e PublishTemporaryQueue implementano lo schema richiesta/risposta /temp-queue/ di RabbitMQ con una destinazione di risposta di breve durata.

Destinazioni generiche

SubscribeEx, PublishEx e UnSubscribeEx accettano la stringa di destinazione grezza quando ti serve qualcosa che le funzioni di supporto non coprono.

Header tipizzati

OnRabbitMQMessage consegna un TsgcWSRabbitMQSTOMPHeadersMessage e la voce di sottoscrizione corrispondente, così la destinazione, l'id del messaggio e la modalità di ack sono proprietà invece che sottostringhe.

Header personalizzati

Ogni funzione di pubblicazione accetta un TStrings di header aggiuntivi, ed è così che imposti le estensioni di RabbitMQ come la priorità del messaggio, la scadenza o la persistenza.

Connessione

Client, Authentication, HeartBeat, Versions e Options si comportano esattamente come sul client STOMP generico.

Continua a esplorare

Guida onlineRiferimento API completo e guida all'utilizzo.
Client STOMP genericoIl componente base con l'insieme di frame standard.
AMQP 0.9.1 ClientIl protocollo nativo di RabbitMQ, se STOMP non è un requisito.
Scarica la versione di prova gratuitaEsegui il client contro un container RabbitMQ locale.
PrezziLicenze Single, Team e Site con codice sorgente completo.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Pronto per iniziare?

Scarica la versione di prova gratuita e dialoga con RabbitMQ via STOMP da Delphi o C++ Builder.