Client AMQP per Delphi e C++ Builder | eSeGeCe

Protocollo AMQP

Advanced Message Queuing Protocol per il messaging enterprise affidabile. Supporto completo di AMQP 0.9.1 e 1.0, compatibile con RabbitMQ e Azure Service Bus.

Risposta rapida: il componente TsgcAMQPClient collega le app Delphi e C++ Builder ai broker AMQP, implementando sia AMQP 0.9.1 sia AMQP 1.0 con channel, exchange, queue, acknowledgment e transazioni verso RabbitMQ e Azure Service Bus.

Cos'è AMQP?

AMQP è uno standard aperto per il messaging enterprise che garantisce un recapito dei messaggi affidabile e interoperabile tra piattaforme e implementazioni diverse.

Code di messaggi di livello enterprise

AMQP definisce un protocollo a livello wire per i middleware orientati ai messaggi, garantendo una vera interoperabilità tra le implementazioni dei diversi vendor. Il suo sofisticato modello di routing basato su exchange, code e binding supporta pattern di messaging complessi, fra cui direct routing, topic-based routing, fan-out e header-based routing. sgcWebSockets implementa sia AMQP 0.9.1 (la versione largamente diffusa usata da RabbitMQ) sia AMQP 1.0 (lo standard OASIS adottato da Azure Service Bus), offrendoti la massima flessibilità.

  • Protocollo wire-level che garantisce interoperabilità tra i vendor
  • Routing flessibile con exchange, code e binding
  • Recapito dei messaggi garantito tramite acknowledgment
  • Supporto sia per AMQP 0.9.1 sia per 1.0
PRODUCER EXCH Q1 Q2 CONSUMER

Caratteristiche di AMQP

Funzionalità di messaging di livello industriale per applicazioni mission-critical.

Recapito affidabile dei messaggi

I messaggi non vanno mai persi grazie ai publisher confirm e agli acknowledgment dei consumer, che assicurano garanzie di recapito end-to-end.

Modello Exchange/Queue/Binding

Routing flessibile tramite exchange direct, topic, fanout e headers collegati a code con routing key configurabili.

Acknowledgment dei messaggi

I consumer confermano esplicitamente i messaggi elaborati. I messaggi senza acknowledgment vengono automaticamente rimessi in coda per essere riconsegnati.

Transazioni

Raggruppa le operazioni di pubblicazione e acknowledgment in transazioni atomiche che vengono completate tutte o annullate tutte.

Controllo di flusso

Il controllo di flusso integrato impedisce ai producer veloci di sovraccaricare i consumer lenti, garantendo prestazioni stabili del sistema.

Multiplexing dei canali

Più canali logici su un'unica connessione TCP, riducendo l'overhead di connessione e mantenendo l'isolamento.

RabbitMQ e Azure Service Bus

Testato e verificato con RabbitMQ (AMQP 0.9.1) e Azure Service Bus (AMQP 1.0) per deployment in produzione.

Casi d'uso di AMQP

Scenari di messaging mission-critical in cui affidabilità e interoperabilità sono fondamentali.

Elaborazione di transazioni finanziarie

Elabora transazioni finanziarie con consegna garantita e semantica exactly-once per sistemi bancari e di pagamento.

Gestione degli ordini

Gestisci i flussi di ordini con un'affidabile messaggistica a code tra i sistemi di inserimento, evasione, spedizione e notifica.

Enterprise Service Bus

Costruisci un Enterprise Service Bus che colleghi sistemi eterogenei con un recapito di messaggi asincrono e affidabile.

Calcolo distribuito

Distribuisci il lavoro su più nodi di elaborazione con code di task e pattern di raccolta dei risultati.

Audit logging

Cattura e instrada gli eventi di audit verso i sistemi di logging con consegna garantita, assicurando che nessuna voce dell'audit trail venga persa.

Esempio AMQP in Delphi

Connettiti a un broker AMQP, dichiara code e scambia messaggi.

uses
  sgcAMQP_Client, sgcAMQP_Classes;

var
  AMQPClient: TsgcAMQPClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  AMQPClient := TsgcAMQPClient.Create(nil);
  AMQPClient.Host := 'rabbitmq.example.com';
  AMQPClient.Port := 5672;
  AMQPClient.Authentication.Username := 'guest';
  AMQPClient.Authentication.Password := 'guest';
  AMQPClient.VirtualHost := '/';

  // Set up event handlers
  AMQPClient.OnAMQPConnect := OnAMQPConnect;
  AMQPClient.OnAMQPMessage := OnAMQPMessage;
  AMQPClient.Connect;
end;

procedure TForm1.OnAMQPConnect(Sender: TObject);
begin
  // Open a channel
  AMQPClient.OpenChannel(1);

  // Declare a queue
  AMQPClient.DeclareQueue(1, 'orders',
    False, True, False, False);

  // Start consuming messages
  AMQPClient.BasicConsume(1, 'orders',
    'consumer-1', False, False, False, False);
end;

procedure TForm1.OnAMQPMessage(Sender: TObject;
  aChannel: Integer; aMessage: TsgcAMQPMessage);
begin
  // Process the message
  Memo1.Lines.Add('Received: ' + aMessage.Body);

  // Acknowledge the message
  AMQPClient.BasicAck(aChannel, aMessage.DeliveryTag, False);
end;

procedure TForm1.ButtonPublishClick(Sender: TObject);
begin
  // Publish a message to the default exchange
  AMQPClient.BasicPublish(1, '', 'orders',
    '{"orderId": 67890, "total": 99.95}');
end;

Casi d'uso AMQP

Domande comuni sul message queuing AMQP da Delphi e C++ Builder.

Crea un TsgcAMQPClient, imposta Host, Port, Authentication e VirtualHost, poi chiama Connect. Dall'evento OnAMQPConnect apri un channel con OpenChannel, dichiari una queue con DeclareQueue e inizi a ricevere con BasicConsume. Invii messaggi con BasicPublish e li confermi con BasicAck.
Il client implementa sia AMQP 0.9.1, la versione ampiamente diffusa usata da RabbitMQ, sia AMQP 1.0, lo standard OASIS usato da Azure Service Bus. È testato e verificato con RabbitMQ e Azure Service Bus per i deployment in produzione, e il protocollo a livello di wire garantisce l'interoperabilità con altri broker conformi.
Sì. I publisher confirm e gli acknowledgment dei consumer forniscono garanzie di consegna end-to-end, i messaggi non confermati vengono rimessi automaticamente in coda e puoi raggruppare le operazioni di publish e acknowledge in transazioni atomiche. Il modello di exchange, queue e binding supporta il routing direct, topic, fanout e headers, con il multiplexing dei channel su un'unica connessione.
sgcWebSockets supporta da Delphi 7 fino all'ultima release di Delphi e le versioni corrispondenti di C++ Builder, su Windows, macOS, Linux, iOS e Android. Scarica la trial gratuita per valutare il client AMQP nel tuo progetto.

Pronto a iniziare con AMQP?

Scarica la versione di prova gratuita e collegati ai message broker enterprise in pochi minuti.