AMQP-protocol

Advanced Message Queuing Protocol voor betrouwbare enterprise-messaging. Volledige ondersteuning voor AMQP 0.9.1 en 1.0, compatibel met RabbitMQ en Azure Service Bus.

Wat is AMQP?

AMQP is een open standaard voor enterprise-messaging die betrouwbare, interoperabele berichtaflevering biedt tussen verschillende platforms en implementaties.

Berichtwachtrijen van enterpriseniveau

AMQP definieert een wire-level protocol voor message-oriented middleware en garandeert daarmee echte interoperabiliteit tussen implementaties van verschillende leveranciers. Het verfijnde routeringsmodel met exchanges, queues en bindings ondersteunt complexe messagingpatronen zoals direct routing, topic-routing, fan-out en header-routing. sgcWebSockets implementeert zowel AMQP 0.9.1 (de breed ingezette versie van RabbitMQ) als AMQP 1.0 (de OASIS-standaard die Azure Service Bus gebruikt), zodat je maximale flexibiliteit hebt.

  • Wire-level protocol garandeert interoperabiliteit tussen leveranciers
  • Flexibele routering met exchanges, queues en bindings
  • Gegarandeerde berichtaflevering met acknowledgments
  • Zowel AMQP 0.9.1 als 1.0 ondersteund
PRODUCER EXCH Q1 Q2 CONSUMER

AMQP-functies

Robuuste messagingfuncties voor missiekritische toepassingen.

Betrouwbare berichtaflevering

Berichten gaan nooit verloren dankzij publisher confirms en consumer acknowledgments die end-to-end afleveringsgaranties bieden.

Exchange-/queue-/binding-model

Flexibele routering via direct-, topic-, fanout- en headers-exchanges die met configureerbare routing keys aan queues zijn gekoppeld.

Berichtbevestiging

Consumers bevestigen verwerkte berichten expliciet. Onbevestigde berichten worden automatisch opnieuw in de wachtrij geplaatst voor herlevering.

Transacties

Groepeer publish- en acknowledge-operaties in atomische transacties die allemaal slagen of allemaal worden teruggedraaid.

Flow control

Ingebouwde flow control voorkomt dat snelle producers trage consumers overbelasten en zorgt zo voor stabiele systeemprestaties.

Channelmultiplexing

Meerdere logische channels over één TCP-verbinding, wat de verbindingsoverhead verlaagt en de isolatie behoudt.

RabbitMQ & Azure Service Bus

Getest en geverifieerd met RabbitMQ (AMQP 0.9.1) en Azure Service Bus (AMQP 1.0) voor productie-deployments.

AMQP-toepassingen

Missiekritische messagingscenario's waarin betrouwbaarheid en interoperabiliteit belangrijk zijn.

Verwerking van financiële transacties

Verwerk financiële transacties met gegarandeerde aflevering en exactly-once semantiek voor bank- en betaalsystemen.

Orderbeheer

Beheer order-workflows met betrouwbare message queuing tussen orderinvoer, fulfilment, verzending en notificatiesystemen.

Enterprise service bus

Bouw een enterprise service bus die uiteenlopende systemen verbindt met betrouwbare, asynchrone berichtaflevering.

Distributed computing

Verdeel werk over meerdere verwerkingsnodes met taakwachtrijen en patronen voor resultaatverzameling.

Audit logging

Vang audit-gebeurtenissen op en stuur ze naar logsystemen met gegarandeerde aflevering, zodat er geen audittrail-entries verloren gaan.

Delphi AMQP-voorbeeld

Verbind met een AMQP-broker, declareer queues en wissel berichten uit.

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;

Klaar om aan de slag te gaan met AMQP?

Download de gratis proefversie en maak binnen enkele minuten verbinding met enterprise-message-brokers.