AMQP-Protokoll
Advanced Message Queuing Protocol für zuverlässiges Enterprise-Messaging. Volle Unterstützung für AMQP 0.9.1 und 1.0, kompatibel mit RabbitMQ und Azure Service Bus.
Advanced Message Queuing Protocol für zuverlässiges Enterprise-Messaging. Volle Unterstützung für AMQP 0.9.1 und 1.0, kompatibel mit RabbitMQ und Azure Service Bus.
AMQP ist ein offener Standard für Enterprise-Messaging, der zuverlässige, interoperable Nachrichtenzustellung über verschiedene Plattformen und Implementierungen hinweg bietet.
AMQP definiert ein Wire-Level-Protokoll für nachrichtenorientierte Middleware und sichert echte Interoperabilität zwischen Implementierungen verschiedener Anbieter. Sein ausgefeiltes Routing-Modell auf Basis von Exchanges, Queues und Bindings unterstützt komplexe Messaging-Muster, darunter Direct Routing, topicbasiertes Routing, Fan-out und headerbasiertes Routing. sgcWebSockets implementiert sowohl AMQP 0.9.1 (die weit verbreitete, von RabbitMQ genutzte Version) als auch AMQP 1.0 (den von Azure Service Bus genutzten OASIS-Standard) und bietet dir maximale Flexibilität.
Industrietaugliche Messaging-Funktionen für unternehmenskritische Anwendungen.
Nachrichten gehen niemals verloren — Publisher Confirms und Consumer Acknowledgments stellen Ende-zu-Ende-Zustellgarantien sicher.
Flexibles Routing über Direct-, Topic-, Fanout- und Headers-Exchanges, die mit konfigurierbaren Routing Keys an Queues gebunden sind.
Consumer bestätigen verarbeitete Nachrichten ausdrücklich. Nicht bestätigte Nachrichten werden automatisch zur erneuten Zustellung in die Queue zurückgestellt.
Fasse Publish- und Acknowledge-Operationen in atomare Transaktionen zusammen, die entweder vollständig gelingen oder vollständig zurückgerollt werden.
Eingebaute Flusssteuerung verhindert, dass schnelle Producer langsame Consumer überlasten, und sichert stabile Systemleistung.
Mehrere logische Channels über eine einzige TCP-Verbindung — reduziert Verbindungsaufwand bei gleichzeitiger Isolation.
Getestet und verifiziert mit RabbitMQ (AMQP 0.9.1) und Azure Service Bus (AMQP 1.0) für Produktivdeployments.
Unternehmenskritische Messaging-Szenarien, in denen Zuverlässigkeit und Interoperabilität entscheidend sind.
Verarbeite Finanztransaktionen mit garantierter Zustellung und Exactly-once-Semantik für Banken- und Zahlungssysteme.
Verwalte Auftragsworkflows mit zuverlässigem Message Queuing zwischen Auftragserfassung, Fulfillment, Versand und Benachrichtigungssystemen.
Baue einen Enterprise Service Bus, der unterschiedliche Systeme über zuverlässige, asynchrone Nachrichtenzustellung verbindet.
Verteile Arbeit auf mehrere Verarbeitungsknoten mithilfe von Task-Queues und Mustern zur Ergebniserfassung.
Erfasse und leite Audit-Ereignisse mit garantierter Zustellung an Logging-Systeme weiter — kein Eintrag im Audit Trail geht verloren.
Verbinde dich mit einem AMQP-Broker, deklariere Queues und tausche Nachrichten aus.
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 := '/';
// Event-Handler einrichten
AMQPClient.OnAMQPConnect := OnAMQPConnect;
AMQPClient.OnAMQPMessage := OnAMQPMessage;
AMQPClient.Connect;
end;
procedure TForm1.OnAMQPConnect(Sender: TObject);
begin
// Channel öffnen
AMQPClient.OpenChannel(1);
// Queue deklarieren
AMQPClient.DeclareQueue(1, 'orders',
False, True, False, False);
// Nachrichten konsumieren
AMQPClient.BasicConsume(1, 'orders',
'consumer-1', False, False, False, False);
end;
procedure TForm1.OnAMQPMessage(Sender: TObject;
aChannel: Integer; aMessage: TsgcAMQPMessage);
begin
// Nachricht verarbeiten
Memo1.Lines.Add('Received: ' + aMessage.Body);
// Nachricht bestätigen
AMQPClient.BasicAck(aChannel, aMessage.DeliveryTag, False);
end;
procedure TForm1.ButtonPublishClick(Sender: TObject);
begin
// Nachricht an das Default-Exchange veröffentlichen
AMQPClient.BasicPublish(1, '', 'orders',
'{"orderId": 67890, "total": 99.95}');
end;