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.

Qu'est-ce qu'AMQP ?

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.

Mise en file de messages de niveau entreprise

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.

  • Protocole de niveau filaire qui garantit l'interopérabilité multi-éditeurs
  • Routage flexible avec exchanges, queues et bindings
  • Livraison de messages garantie avec acquittements
  • Prise en charge d'AMQP 0.9.1 et 1.0
PRODUCER EXCH Q1 Q2 CONSUMER

Fonctionnalités AMQP

Fonctionnalités de messaging robustes pour les applications mission-critique.

Livraison de messages fiable

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.

Modèle Exchange/Queue/Binding

Routage flexible via les exchanges direct, topic, fanout et headers liés à des queues avec des routing keys configurables.

Acquittement de messages

Les consommateurs acquittent explicitement les messages traités. Les messages non acquittés sont automatiquement remis en file pour redélivraison.

Transactions

Regroupe les opérations de publication et d'acquittement dans des transactions atomiques qui réussissent toutes ou se rétractent toutes.

Contrôle de flux

Le contrôle de flux intégré empêche les producteurs rapides de submerger les consommateurs lents, garantissant des performances système stables.

Multiplexage de canaux

Plusieurs canaux logiques sur une seule connexion TCP, réduisant la surcharge de connexion tout en maintenant l'isolement.

RabbitMQ et Azure Service Bus

Testé et vérifié avec RabbitMQ (AMQP 0.9.1) et Azure Service Bus (AMQP 1.0) pour des déploiements en production.

Cas d'usage AMQP

Scénarios de messaging mission-critique où la fiabilité et l'interopérabilité sont essentielles.

Traitement de transactions financières

Traite les transactions financières avec une livraison garantie et une sémantique exactly-once pour les systèmes bancaires et de paiement.

Gestion de commandes

Gère les workflows de commandes avec une mise en file fiable entre les systèmes de saisie, traitement, expédition et notification.

Enterprise Service Bus

Construis un enterprise service bus reliant des systèmes disparates avec une livraison de messages asynchrone et fiable.

Calcul distribué

Distribue le travail entre plusieurs nœuds de traitement avec des files de tâches et des schémas de collecte de résultats.

Journalisation d'audit

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.

Exemple AMQP en Delphi

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;

Prêt à commencer avec AMQP ?

Télécharge l'essai gratuit et connecte-toi à des brokers de messages d'entreprise en quelques minutes.