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.
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.
AMQP is een open standaard voor enterprise-messaging die betrouwbare, interoperabele berichtaflevering biedt tussen verschillende platforms en implementaties.
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.
Robuuste messagingfuncties voor missiekritische toepassingen.
Berichten gaan nooit verloren dankzij publisher confirms en consumer acknowledgments die end-to-end afleveringsgaranties bieden.
Flexibele routering via direct-, topic-, fanout- en headers-exchanges die met configureerbare routing keys aan queues zijn gekoppeld.
Consumers bevestigen verwerkte berichten expliciet. Onbevestigde berichten worden automatisch opnieuw in de wachtrij geplaatst voor herlevering.
Groepeer publish- en acknowledge-operaties in atomische transacties die allemaal slagen of allemaal worden teruggedraaid.
Ingebouwde flow control voorkomt dat snelle producers trage consumers overbelasten en zorgt zo voor stabiele systeemprestaties.
Meerdere logische channels over één TCP-verbinding, wat de verbindingsoverhead verlaagt en de isolatie behoudt.
Getest en geverifieerd met RabbitMQ (AMQP 0.9.1) en Azure Service Bus (AMQP 1.0) voor productie-deployments.
Missiekritische messagingscenario's waarin betrouwbaarheid en interoperabiliteit belangrijk zijn.
Verwerk financiële transacties met gegarandeerde aflevering en exactly-once semantiek voor bank- en betaalsystemen.
Beheer order-workflows met betrouwbare message queuing tussen orderinvoer, fulfilment, verzending en notificatiesystemen.
Bouw een enterprise service bus die uiteenlopende systemen verbindt met betrouwbare, asynchrone berichtaflevering.
Verdeel werk over meerdere verwerkingsnodes met taakwachtrijen en patronen voor resultaatverzameling.
Vang audit-gebeurtenissen op en stuur ze naar logsystemen met gegarandeerde aflevering, zodat er geen audittrail-entries verloren gaan.
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;