Komponent AMQP 1.0 Client: sgcMQ | eSeGeCe

AMQP 1.0 Client

TsgcWSPClient_AMQP1 implementuje OASIS AMQP 1.0, opublikowany także jako ISO/IEC 19464. Mimo wspólnej nazwy jest to inny protokół niż AMQP 0.9.1, z innym modelem obiektowym: kontener otwiera sesje, sesje niosą łącza nadawcze i odbiorcze, a łącza przenoszą wiadomości pod kontrolą przepływu opartą na kredytach. To protokół, którym posługują się Azure Service Bus i Event Hubs.

TsgcWSPClient_AMQP1

Sesje i łącza adresujesz nazwą, którą sam im nadasz, więc 'session1' i 'sender1' identyfikują te same obiekty w każdym późniejszym wywołaniu.

Klasa komponentu

TsgcWSPClient_AMQP1

Specyfikacja

OASIS AMQP 1.0 (ISO/IEC 19464)

Transport

TCP (5672) lub TLS (5671)

Języki

Delphi, C++ Builder

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

Otwórz sesję, podłącz łącza, wysyłaj

Łącze nadawcze wskazuje węzeł docelowy na brokerze, a łącze odbiorcze węzeł źródłowy. Gdy odbiornik jest podłączony, dostarczone wiadomości trafiają do OnAMQPMessage.

uses
  sgcTCP_Client_WS, sgcWebSocket_Protocols,
  sgcWebSocket_Protocol_AMQP1_Client, sgcAMQP1_Classes, sgcAMQP1_Frames;

var
  TCPClient: TsgcTCPClient;
  AMQP1: TsgcWSPClient_AMQP1;
begin
  TCPClient := TsgcTCPClient.Create(nil);
  TCPClient.Host := 'broker.example.com';
  TCPClient.Port := 5672;

  AMQP1 := TsgcWSPClient_AMQP1.Create(nil);
  AMQP1.Client := TCPClient;
  AMQP1.AMQPOptions.ContainerId := 'delphi-app';
  AMQP1.AMQPOptions.Authentication.AuthType := amqp1authSASLPlain;
  AMQP1.AMQPOptions.Authentication.Username := 'guest';
  AMQP1.AMQPOptions.Authentication.Password := 'guest';

  AMQP1.OnAMQPConnect := AMQPConnect;
  AMQP1.OnAMQPMessage := AMQPMessage;

  TCPClient.Active := True;
end;

procedure TForm1.AMQPConnect(Sender: TObject;
  const aOpen: TsgcAMQP1FrameOpen);
begin
  AMQP1.CreateSession('session1');

  // Sender link: name, then the target node address
  AMQP1.CreateSenderLink('session1', 'sender1', '/queue/orders');

  // Receiver link: deliveries arrive on OnAMQPMessage
  AMQP1.CreateReceiverLink('session1', 'receiver1', '/queue/orders');

  AMQP1.SendMessage('session1', 'sender1', '{"id":42}');
end;
#include "sgcTCP_Client_WS.hpp"
#include "sgcWebSocket_Protocols.hpp"
#include "sgcWebSocket_Protocol_AMQP1_Client.hpp"

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

TsgcWSPClient_AMQP1 *AMQP1 = new TsgcWSPClient_AMQP1(this);
AMQP1->Client = TCPClient;
AMQP1->AMQPOptions->ContainerId = "cbuilder-app";
AMQP1->OnAMQPConnect = AMQPConnect;
AMQP1->OnAMQPMessage = AMQPMessage;

TCPClient->Active = true;

// In the OnAMQPConnect handler. SendMessage is SendMessage_ in C++ Builder.
AMQP1->CreateSession("session1");
AMQP1->CreateSenderLink("session1", "sender1", "/queue/orders");
AMQP1->CreateReceiverLink("session1", "receiver1", "/queue/orders");
AMQP1->SendMessage_("session1", "sender1", "{\"id\":42}");

Kluczowe właściwości i metody

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

Sesje

CreateSession zwraca TsgcAMQP1Session, a CloseSession ją zamyka. Sesja jest jednostką porządkowania i okienkowania między dwoma kontenerami.

Łącza

CreateSenderLink podłącza się do węzła docelowego, CreateReceiverLink do węzła źródłowego, a CloseLink odłącza jedno i drugie. Sesja może utrzymywać kilka łączy, do wartości MaxLinksPerSession.

Wysyłanie

SendMessage(session, link, text) przesyła wiadomość, a przeciążenie przyjmujące pełny TsgcAMQP1Message przydaje się, gdy potrzebujesz właściwości aplikacji, identyfikatora lub adnotacji.

Odbieranie

Podłączone łącze odbiorcze wypycha dostarczone wiadomości do OnAMQPMessage. GetMessage pobiera jedną synchronicznie z limitem czasu, gdy styl blokujący pasuje lepiej.

Informacja zwrotna o dostarczeniu

OnAMQPMessageSent zgłasza się, gdy transfer opuszcza klienta, a OnAMQPMessageSentAck, gdy broker go rozliczy. Te dwa zdarzenia są celowo rozdzielone.

Uwierzytelnianie

AMQPOptions.Authentication.AuthType wybiera amqp1authSASLPlain, amqp1authSASLAnonymous, amqp1authSASLExternal albo brak. OnAMQPSASLAuthentication raportuje przebieg negocjacji.

Funkcje pomocnicze Azure

CreateCBSLink i PutCBSToken implementują Claims-Based Security. CreateAzureCbsSasToken buduje token SAS dla Service Bus, a CreateAzureCbsJWT token bearer OAuth.

Kontrola przepływu

AMQPOptions.CreditSize i WindowSize określają, ile odbiornik przyjmie, zanim przyzna kolejne kredyty. MaxFrameSize i ChannelMax są negocjowane przy otwarciu.

Inspekcja ramek

OnAMQPBeforeReadFrame i OnAMQPBeforeWriteFrame przekazują ci każdą surową ramkę wraz z flagą Handled, co jest bezcenne, gdy broker zachowuje się nieoczekiwanie.

Poznawaj dalej

Pomoc onlinePełna dokumentacja API i przewodnik użytkowania.
AMQP 0.9.1 ClientTen drugi AMQP, z wymianami, kolejkami i powiązaniami.
Pobierz bezpłatną wersję próbnąUruchom klienta wobec Azure Service Bus, Artemis lub Qpid.
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 podłącz swoje pierwsze łącze AMQP 1.0 z Delphi lub C++ Builder.