Delphi AMQP İstemcisi | AMQP 1.0 & 0.9.1 Bileşenleri | eSeGeCe

Delphi AMQP İstemcisi — AMQP 1.0 ve 0.9.1 Bileşenleri

Delphi ve C++Builder için iki yerel AMQP istemci bileşeni: TsgcWSPClient_AMQP, RabbitMQ ile exchange'ler, kuyruklar, binding'ler ve tüketici onaylarıyla AMQP 0.9.1 konuşur; TsgcWSPClient_AMQP1 ise Azure Service Bus, Apache Qpid ve uyumlu herhangi bir aracıyla, bir WebSocket veya ham TCP taşıyıcısı üzerinden OASIS AMQP 1.0 konuşur.

Her iki AMQP sürümü, tek kitaplık

AMQP 0.9.1 ve AMQP 1.0 aynı adı paylaşır ancak farklı hat protokolleridir. sgcWebSockets her birini yerel olarak uygular, böylece aracınıza uyan bileşeni seçersiniz.

Bir Delphi AMQP istemcisi, VCL veya FMX uygulamanızı kurumsal mesaj aracılarına bağlar. AMQP 0.9.1, RabbitMQ tarafından kullanılan ve yaygın olarak dağıtılan sürümdür: exchange'ler ve kuyruklar bildirir, bunları yönlendirme anahtarlarıyla birbirine bağlar, basic.publish ile yayınlar ve basic.consume ile tüketirsiniz; üstüne işlemler ve onaylar eklenir. AMQP 1.0, Azure Service Bus ve Apache Qpid tarafından kullanılan OASIS standardıdır: oturumlar, sender link'ler ve receiver link'ler üzerine kurulu simetrik bir link protokolü; Azure Service Bus SAS ve OAuth kimlik doğrulaması için Claims-Based-Security belirteç yardımcılarıyla birlikte gelir.

Her iki bileşen de Client özelliği aracılığıyla bir TsgcWebSocketClient'a takılır ve bir WebSocket veya ham TCP taşıyıcısı üzerinden çalışır; böylece aynı kod, standart AMQP bağlantı noktalarındaki bir aracıya ulaşır veya yalnızca HTTP'ye izin veren altyapıları aşmak için 443 bağlantı noktası üzerinden tünel açar.

AMQP 0.9.1

TsgcWSPClient_AMQP: exchange'ler, kuyruklar, binding'ler, işlemler

AMQP 1.0

TsgcWSPClient_AMQP1: oturumlar, sender ve receiver link'ler, CBS belirteçleri

Taşımalar

WebSocket veya ham TCP taşıyıcısı, her ikisinde de TLS isteğe bağlı

Platformlar

Windows, macOS, Linux, iOS, Android. Delphi 7'den Delphi 13'e

Tam AMQP istemci yüzeyi

Her protokol işlemi bir metot, her aracı bildirimi bir olaydır.

Exchange'ler & kuyruklar (0.9.1)

DeclareExchange, DeclareQueue ve BindQueue, RabbitMQ yönlendirme topolojisini koddan kurar: OpenChannel aracılığıyla kanal başına kapsamla direct, fanout ve topic yönlendirmesi.

Yayınlama & tüketme (0.9.1)

PublishMessage, bir yönlendirme anahtarıyla bir exchange'e gönderir; Consume bir kuyruğa abone olur ve teslimatlar OnAMQPBasicDeliver aracılığıyla gelir.

CreateSession bir AMQP 1.0 oturumu açar, ardından CreateSenderLink ve CreateReceiverLink bir düğüm adresine bağlanır. Gelen transferler OnAMQPMessage aracılığıyla ulaşır.

Azure Service Bus (1.0)

Claims-Based-Security yardımcıları, Azure Service Bus SAS / OAuth belirteç akışını sarmalar; böylece bir ad alanına karşı kimlik doğrulama, elle kurulmuş bir CBS alışverişi yerine bir özellik ayarına dönüşür.

Teslimat geri bildirimi

OnAMQPMessageSent ve OnAMQPMessageSentAck, bir transferin istemciden ne zaman ayrıldığını ve aracının onu ne zaman kesinleştirdiğini bildirir.

SASL kimlik doğrulaması

Kimlik doğrulama meydan okumaları OnAMQPSASLAuthentication (1.0) ile OnAMQPAuthentication / OnAMQPChallenge (0.9.1) aracılığıyla sunulur.

HeartBeat

0.9.1 istemcisi bir HeartBeat özelliği sunar; böylece boştaki bağlantılar proxy'ler ve aracı zaman aşımları boyunca canlı kalır.

Yaşam döngüsü olayları

OnAMQPConnect, OnAMQPDisconnect, OnAMQPClose ve OnAMQPException, uygulamayı protokol durumundan haberdar eder.

Sürümler

Her iki AMQP istemcisi de sgcWebSockets'in Standard'dan Enterprise ve All-Access'e kadar her sürümünde ve .NET kitaplığında yer alır.

Birkaç satırda yayınlayın ve tüketin

AMQP bileşenini bir TsgcWebSocketClient ile eşleştirin, bağlanın, ardından bildirin / iliştirin ve başlayın.

uses
  sgcWebSocket, sgcWebSocket_Protocol_AMQP_Client, sgcAMQP_Classes;

var
  WSClient: TsgcWebSocketClient;
  AMQP: TsgcWSPClient_AMQP;
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'broker.example.com';
  WSClient.Port := 15674;
  WSClient.Options.Parameters := '/ws';

  AMQP := TsgcWSPClient_AMQP.Create(nil);
  AMQP.Client := WSClient;

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

  WSClient.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 a message
  AMQP.PublishMessage('ch1', 'orders', 'create', '{"id":42}');
end;
uses
  sgcWebSocket, sgcWebSocket_Protocol_AMQP1_Client, sgcAMQP1_Classes;

var
  WSClient: TsgcWebSocketClient;
  AMQP1: TsgcWSPClient_AMQP1;
  oSession: TsgcAMQP1Session;
  oSender:  TsgcAMQP1SenderLink;
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'broker.example.com';
  WSClient.Port := 5673;

  AMQP1 := TsgcWSPClient_AMQP1.Create(nil);
  AMQP1.Client := WSClient;

  AMQP1.OnAMQPConnect      := AMQPConnect;
  AMQP1.OnAMQPMessage      := AMQPMessage;
  AMQP1.OnAMQPSessionOpen  := AMQPSessionOpen;
  AMQP1.OnAMQPLinkOpen     := AMQPLinkOpen;

  WSClient.Active := True;

  oSession := AMQP1.CreateSession;
  oSender  := AMQP1.CreateSenderLink(oSession, '/queue/orders');
  // Receivers handle pushed deliveries through OnAMQPMessage
  AMQP1.CreateReceiverLink(oSession, '/queue/orders');
end;
#include "sgcWebSocket.hpp"
#include "sgcWebSocket_Protocol_AMQP_Client.hpp"

TsgcWebSocketClient* WSClient = new TsgcWebSocketClient(NULL);
WSClient->Host = "broker.example.com";
WSClient->Port = 15674;
WSClient->Options->Parameters = "/ws";

TsgcWSPClient_AMQP* AMQP = new TsgcWSPClient_AMQP(NULL);
AMQP->Client = WSClient;
AMQP->OnAMQPConnect = AMQPConnect;
AMQP->OnAMQPBasicDeliver = AMQPBasicDeliver;

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

AMQP 0.9.1 veya AMQP 1.0

Sürüm numarasına göre değil, aracıya göre seçin. Karşı taraf RabbitMQ ise AMQP 0.9.1 bileşenini kullanın: exchange'ler, kuyruklar ve binding'lerden oluşan RabbitMQ modeliyle bire bir eşleşir. Karşı taraf Azure Service Bus, Apache Qpid veya OASIS standardını duyuran başka bir aracıysa, AMQP 1.0 bileşenini ve onun oturum / link modelini kullanın.

Her ikisi de aynı pakette gelir, bu nedenle karma ortamlar sorun oluşturmaz: tek bir uygulama, her biri kendi TsgcWebSocketClient taşıyıcısında olmak üzere, RabbitMQ'ya bir 0.9.1 bağlantısını ve Azure Service Bus'a bir 1.0 bağlantısını yan yana tutabilir.

sgcWebSockets'te AMQP hakkında daha fazlası

AMQP 0.9.1 protokol sayfası

TsgcWSPClient_AMQP için tam referans: özellikler, metotlar, olaylar ve demo projesi.

AMQP 1.0 protokol sayfası

TsgcWSPClient_AMQP1 için tam referans: oturumlar, link'ler ve CBS kimlik doğrulaması.

Gerçek zamanlı seçici

MQTT, WebSocket, SSE veya HTTP/2 push yerine AMQP'yi ne zaman seçmeli.

Blog: Exchange'ler ve kuyruklar

Delphi koduyla açıklanan AMQP 0.9.1 yönlendirme modeli.

Blog: Mesaj yayınlama

Delphi istemcisinden yayınlama desenleri ve teslimat seçenekleri.

Blog: Azure Service Bus CBS kimlik doğrulaması

AMQP 1.0 üzerinden Azure Service Bus'a karşı Claims-Based-Security belirteçleri.

Best value: All-AccessEvery eSeGeCe product, Premium Support included, from €1,059/year.
See All-Access pricing

Aracınıza bugün bağlanın

Denemeyi indirin. AMQP 0.9.1 ve AMQP 1.0 demo projeleri kutudan çıktığı gibi derlenir.