Protocole AMQP
Advanced Message Queuing Protocol pour un messaging d'entreprise fiable. Prise en charge complète d'AMQP 0.9.1 et 1.0, compatible avec RabbitMQ et Azure Service Bus.
Advanced Message Queuing Protocol pour un messaging d'entreprise fiable. Prise en charge complète d'AMQP 0.9.1 et 1.0, compatible avec RabbitMQ et Azure Service Bus.
AMQP est un standard ouvert pour le messaging d'entreprise qui assure une livraison de messages fiable et interopérable entre différentes plateformes et implémentations.
AMQP définit un protocole de niveau filaire pour les middleware orientés messages, garantissant une véritable interopérabilité entre les implémentations de différents éditeurs. Son modèle de routage sophistiqué basé sur les exchanges, queues et bindings prend en charge des schémas de messaging complexes : routage direct, routage par topic, fan-out et routage par en-têtes. sgcWebSockets implémente à la fois AMQP 0.9.1 (la version largement déployée utilisée par RabbitMQ) et AMQP 1.0 (le standard OASIS utilisé par Azure Service Bus), te donnant une flexibilité maximale.
Fonctionnalités de messaging robustes pour les applications mission-critique.
Les messages ne sont jamais perdus grâce aux confirmations d'éditeur et aux acquittements de consommateur qui garantissent une livraison de bout en bout.
Routage flexible via les exchanges direct, topic, fanout et headers liés à des queues avec des routing keys configurables.
Les consommateurs acquittent explicitement les messages traités. Les messages non acquittés sont automatiquement remis en file pour redélivraison.
Regroupe les opérations de publication et d'acquittement dans des transactions atomiques qui réussissent toutes ou se rétractent toutes.
Le contrôle de flux intégré empêche les producteurs rapides de submerger les consommateurs lents, garantissant des performances système stables.
Plusieurs canaux logiques sur une seule connexion TCP, réduisant la surcharge de connexion tout en maintenant l'isolement.
Testé et vérifié avec RabbitMQ (AMQP 0.9.1) et Azure Service Bus (AMQP 1.0) pour des déploiements en production.
Scénarios de messaging mission-critique où la fiabilité et l'interopérabilité sont essentielles.
Traite les transactions financières avec une livraison garantie et une sémantique exactly-once pour les systèmes bancaires et de paiement.
Gère les workflows de commandes avec une mise en file fiable entre les systèmes de saisie, traitement, expédition et notification.
Construis un enterprise service bus reliant des systèmes disparates avec une livraison de messages asynchrone et fiable.
Distribue le travail entre plusieurs nœuds de traitement avec des files de tâches et des schémas de collecte de résultats.
Capture et route les événements d'audit vers les systèmes de journalisation avec une livraison garantie, garantissant qu'aucune entrée de piste d'audit n'est perdue.
Connecte-toi à un broker AMQP, déclare des queues et échange des messages.
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;