AMQP 0.9.1 İstemci Bileşeni: sgcMQ | eSeGeCe

AMQP 0.9.1 İstemcisi

TsgcWSPClient_AMQP, RabbitMQ'nun etrafında tasarlandığı protokol olan AMQP 0.9.1'i konuşur. Modeli olduğu gibi ortaya koyar: bir kanal açarsınız, bir exchange ve bir kuyruk bildirirsiniz, bunları bir yönlendirme anahtarıyla bağlarsınız, ardından yayınlar ve tüketirsiniz. Hiçbir şey basitleştirilmiş bir cephenin arkasına gizlenmez, böylece broker kendi belgelerinin söylediği gibi davranır.

TsgcWSPClient_AMQP

Kanallar, seçtiğiniz bir dizeyle adlandırılır; böylece 'ch1', takip etmek zorunda olduğunuz sayısal bir kimlik yerine her çağrıda aynı kanalı tanımlar.

Bileşen sınıfı

TsgcWSPClient_AMQP

Spesifikasyon

AMQP 0-9-1

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 topoloji bildirin, ardından yayınlayın ve tüketin

Bildirimleri, handshake tamamlandıktan sonra OnAMQPConnect içinde yapın. Teslimatlar daha sonra OnAMQPBasicDeliver üzerine gelir.

uses
  sgcTCP_Client_WS, sgcWebSocket_Protocols,
  sgcWebSocket_Protocol_AMQP_Client, sgcAMQP_Classes;

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

  AMQP := TsgcWSPClient_AMQP.Create(nil);
  AMQP.Client := TCPClient;
  AMQP.AMQPOptions.VirtualHost := '/';
  AMQP.HeartBeat.Enabled  := True;
  AMQP.HeartBeat.Interval := 30;

  AMQP.OnAMQPConnect      := AMQPConnect;
  AMQP.OnAMQPBasicDeliver := AMQPBasicDeliver;

  TCPClient.Active := True;
end;

procedure TForm1.AMQPConnect(Sender: TObject);
begin
  AMQP.OpenChannel('ch1');
  AMQP.DeclareExchange('ch1', 'orders', 'direct');
  AMQP.DeclareQueue('ch1', 'orders_in');
  AMQP.BindQueue('ch1', 'orders_in', 'orders', 'create');
  AMQP.Consume('ch1', 'orders_in');

  // Publish to the exchange with a routing key
  AMQP.PublishMessage('ch1', 'orders', 'create', '{"id":42}');
end;
#include "sgcTCP_Client_WS.hpp"
#include "sgcWebSocket_Protocols.hpp"
#include "sgcWebSocket_Protocol_AMQP_Client.hpp"

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

TsgcWSPClient_AMQP *AMQP = new TsgcWSPClient_AMQP(this);
AMQP->Client = TCPClient;
AMQP->OnAMQPConnect = AMQPConnect;
AMQP->OnAMQPBasicDeliver = AMQPBasicDeliver;

TCPClient->Active = true;

// In the OnAMQPConnect handler:
AMQP->OpenChannel("ch1");
AMQP->DeclareExchange("ch1", "orders", "direct");
AMQP->DeclareQueue("ch1", "orders_in");
AMQP->BindQueue("ch1", "orders_in", "orders", "create");
AMQP->Consume("ch1", "orders_in");
AMQP->PublishMessage("ch1", "orders", "create", "{\"id\":42}");

Temel özellikler & yöntemler

Neredeyse her yöntemin, broker'ın yanıtını bekleyip döndüren engelleyici bir ...Ex ikizi vardır; doğrusal bir kurulum rutininde isteyeceğiniz şey tam olarak budur.

Kanallar

OpenChannel ve CloseChannel, tek bir TCP bağlantısı üzerinde birkaç mantıksal konuşmayı çoğullar. EnableChannel ve DisableChannel, kanal akış denetimini uygular.

Exchange'ler

DeclareExchange(channel, name, type), direct, fanout, topic ya da headers türünde bir exchange oluşturur. DeleteExchange onu kaldırır.

Kuyruklar

DeclareQueue, BindQueue, UnBindQueue, PurgeQueue ve DeleteQueue, kuyruk yaşam döngüsünün tamamını kapsar; her birinin broker'ın yanıtını döndüren bir ...Ex varyantı vardır.

Tüketme

Consume(channel, queue) bir aboneliği başlatır, CancelConsume ise onu sonlandırır. Teslimatlar OnAMQPBasicDeliver üzerine gelir; tek mesajlık çekmeler için OnAMQPBasicGetOk ve OnAMQPBasicGetEmpty bulunur.

Yayınlama

PublishMessage(channel, exchange, routingKey, body), metin, akışlar ve başlıklar ile özellikler içeren tam bir mesaj nesnesi için aşırı yüklemelere sahiptir. Yönlendirilemeyen mesajlar OnAMQPBasicReturn üzerinden geri döner.

Onaylama

AckMessage bir teslimat etiketini onaylar, RejectMessage isteğe bağlı bir yeniden kuyruklama ile onu reddeder ve Recover, broker'dan hâlâ onaylanmamış olan her şeyi yeniden teslim etmesini ister.

İşlemler

SelectTransaction bir kanalı işlem moduna alır, ardından CommitTransaction ya da RollbackTransaction onu kapatır. OnAMQPTransactionOk her adımı onaylar.

Bağlantı ayarı

AMQPOptions; VirtualHost, MaxChannels, MaxFrameSize ve Locale değerlerini taşır, tümü açılış handshake'i sırasında broker ile müzakere edilir.

Prefetch

SetQoS(channel, prefetchSize, prefetchCount, global), broker'ın bir tüketiciye gönderebileceği onaylanmamış mesaj sayısını sınırlar, böylece yavaş bir işleyici mesaj yağmuruna tutulmaz.

Canlılık

HeartBeat, boştaki bağlantıları proxy'ler üzerinden ve broker zaman aşımlarına takılmadan canlı tutar; her alışverişte OnAMQPHeartBeat tetiklenir.

Keşfetmeye devam edin

Çevrimiçi yardımTam API referansı ve kullanım kılavuzu.
AMQP 1.0 İstemcisiDiğer AMQP; kendi bileşenine sahip, farklı bir protokol.
Ücretsiz Deneme Sürümünü İndirinİstemciyi yerel bir RabbitMQ konteynerine 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 exchange'inize yayın yapın.