AMQP 1.0 İstemci Bileşeni: sgcMQ | eSeGeCe

AMQP 1.0 İstemcisi

TsgcWSPClient_AMQP1, ISO/IEC 19464 olarak da yayımlanan OASIS AMQP 1.0'ı uygular. Adı ortak olsa da bu, AMQP 0.9.1'den farklı bir protokoldür ve farklı bir nesne modeline sahiptir: bir konteyner oturumlar açar, oturumlar gönderici ve alıcı bağlantılarını taşır, bağlantılar da mesajları kredi tabanlı akış denetimi altında hareket ettirir. Azure Service Bus ile Event Hubs'ın konuştuğu protokol budur.

TsgcWSPClient_AMQP1

Oturumlar ve bağlantılar, onlara verdiğiniz adla adreslenir; böylece 'session1' ve 'sender1', sonraki her çağrıda aynı nesneleri tanımlar.

Bileşen sınıfı

TsgcWSPClient_AMQP1

Spesifikasyon

OASIS AMQP 1.0 (ISO/IEC 19464)

Taşıma

TCP (5672) veya TLS (5671)

Diller

Delphi, C++ Builder

Taşıma: düz TCP ve TLS. sgcMQ, düz TCP ve TLS üzerinden bağlanır. WebSocket üzerinden AMQP'ye ihtiyacınız varsa, bu, WebSocket istemcisini sağlayan bir sgcWebSockets paketi gerektirir.

Bir oturum açın, bağlantıları iliştirin, gönderin

Bir gönderici bağlantısı broker üzerindeki bir hedef düğümü, bir alıcı bağlantısı ise bir kaynak düğümü işaret eder. Bir alıcı iliştirildiğinde teslimatlar OnAMQPMessage üzerine gelir.

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}");

Temel özellikler & yöntemler

En sık başvurduğunuz üyeler.

Oturumlar

CreateSession bir TsgcAMQP1Session döndürür, CloseSession ise onu sonlandırır. Oturum, iki konteyner arasındaki sıralama ve pencereleme birimidir.

Bağlantılar

CreateSenderLink bir hedef düğüme, CreateReceiverLink bir kaynak düğüme iliştirir, CloseLink ise her ikisini de ayırır. Bir oturum, MaxLinksPerSession değerine kadar birkaç bağlantı tutabilir.

Gönderme

SendMessage(session, link, text) bir mesajı aktarır; uygulama özelliklerine, bir kimliğe ya da açıklamalara ihtiyacınız olduğunda tam bir TsgcAMQP1Message alan bir aşırı yükleme de vardır.

Alma

İliştirilmiş bir alıcı bağlantısı, teslimatları OnAMQPMessage olayına gönderir. Engelleyici bir tarz daha uygun olduğunda GetMessage, zaman aşımıyla birlikte tek bir mesajı eşzamanlı olarak çeker.

Teslimat geri bildirimi

OnAMQPMessageSent, aktarım istemciden ayrıldığında tetiklenir; OnAMQPMessageSentAck ise broker onu kesinleştirdiğinde. İkisi bilinçli olarak ayrıdır.

Kimlik doğrulama

AMQPOptions.Authentication.AuthType; amqp1authSASLPlain, amqp1authSASLAnonymous, amqp1authSASLExternal seçeneklerinden birini ya da hiçbirini seçer. OnAMQPSASLAuthentication müzakereyi raporlar.

Azure yardımcıları

CreateCBSLink ve PutCBSToken, Claims-Based Security'yi uygular. CreateAzureCbsSasToken bir Service Bus SAS token'ı, CreateAzureCbsJWT ise bir OAuth bearer token'ı oluşturur.

Akış denetimi

AMQPOptions.CreditSize ve WindowSize, bir alıcının daha fazla kredi vermeden önce ne kadar kabul edeceğini belirler. MaxFrameSize ve ChannelMax, açılışta müzakere edilir.

Çerçeve incelemesi

OnAMQPBeforeReadFrame ve OnAMQPBeforeWriteFrame, her ham çerçeveyi bir Handled bayrağıyla birlikte size verir; bir broker beklenmedik şekilde davrandığında bu paha biçilmezdir.

Keşfetmeye devam edin

Çevrimiçi yardımTam API referansı ve kullanım kılavuzu.
AMQP 0.9.1 İstemcisiExchange'ler, kuyruklar ve bağlamalar içeren diğer AMQP.
Ücretsiz Deneme Sürümünü İndirinİstemciyi Azure Service Bus, Artemis ya da Qpid'e karşı çalıştırın.
FiyatlandırmaTam kaynak kodlu Single, Team ve Site lisansları.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

Başlamaya Hazır mısınız?

Ücretsiz deneme sürümünü indirin ve Delphi ya da C++ Builder'dan ilk AMQP 1.0 bağlantınızı iliştirin.