Componente AMQP 1.0 Client: sgcMQ | eSeGeCe

AMQP 1.0 Client

TsgcWSPClient_AMQP1 implementa OASIS AMQP 1.0, pubblicato anche come ISO/IEC 19464. Nonostante il nome condiviso, questo è un protocollo diverso da AMQP 0.9.1, con un modello a oggetti diverso: un container apre sessioni, le sessioni portano link sender e receiver, e i link muovono i messaggi sotto un controllo di flusso a credito. È il protocollo che parlano Azure Service Bus ed Event Hubs.

TsgcWSPClient_AMQP1

Le sessioni e i link sono indirizzati con il nome che dai loro, quindi 'session1' e 'sender1' identificano gli stessi oggetti in ogni chiamata successiva.

Classe del componente

TsgcWSPClient_AMQP1

Specifica

OASIS AMQP 1.0 (ISO/IEC 19464)

Trasporto

TCP (5672) o TLS (5671)

Linguaggi

Delphi, C++ Builder

Trasporto: TCP semplice e TLS. sgcMQ si connette tramite TCP semplice e TLS. Se ti serve AMQP su WebSocket, è necessario un package sgcWebSockets, che fornisce il client WebSocket.

Un link sender punta a un nodo di destinazione sul broker, un link receiver a un nodo di origine. Una volta collegato un receiver, le consegne arrivano su 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}");

Proprietà e metodi principali

I membri che userai più spesso.

Sessioni

CreateSession restituisce un TsgcAMQP1Session e CloseSession lo chiude. Una sessione è l'unità di ordinamento e di finestra tra i due container.

CreateSenderLink si collega a un nodo di destinazione, CreateReceiverLink a un nodo di origine, e CloseLink scollega entrambi. Una sessione può contenere più link fino a MaxLinksPerSession.

Invio

SendMessage(session, link, text) trasferisce un messaggio, con un overload che accetta un TsgcAMQP1Message completo quando ti servono application property, un id o le annotation.

Ricezione

Un link receiver collegato invia le consegne a OnAMQPMessage. GetMessage ne preleva uno in modo sincrono con un timeout, quando uno stile bloccante è più comodo.

Riscontro della consegna

OnAMQPMessageSent scatta quando il trasferimento lascia il client, OnAMQPMessageSentAck quando il broker lo definisce. I due sono separati di proposito.

Autenticazione

AMQPOptions.Authentication.AuthType seleziona amqp1authSASLPlain, amqp1authSASLAnonymous, amqp1authSASLExternal o nessuna. OnAMQPSASLAuthentication riporta la negoziazione.

Supporto per Azure

CreateCBSLink e PutCBSToken implementano la Claims-Based Security. CreateAzureCbsSasToken costruisce un token SAS per Service Bus, CreateAzureCbsJWT un bearer token OAuth.

Controllo di flusso

AMQPOptions.CreditSize e WindowSize regolano quanto un receiver accetta prima di emettere altro credito. MaxFrameSize e ChannelMax vengono negoziati all'apertura.

Ispezione dei frame

OnAMQPBeforeReadFrame e OnAMQPBeforeWriteFrame ti consegnano ogni frame grezzo con un flag Handled, il che è preziosissimo quando un broker si comporta in modo inatteso.

Continua a esplorare

Guida onlineRiferimento API completo e guida all'utilizzo.
AMQP 0.9.1 ClientL'altro AMQP, con exchange, code e binding.
Scarica la versione di prova gratuitaEsegui il client contro Azure Service Bus, Artemis o Qpid.
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 collega il tuo primo link AMQP 1.0 da Delphi o C++ Builder.