Cliente de AMQP para Delphi y C++ Builder | eSeGeCe

Protocolo AMQP

Advanced Message Queuing Protocol para mensajería empresarial fiable. Soporte completo de AMQP 0.9.1 y 1.0, compatible con RabbitMQ y Azure Service Bus.

Respuesta rápida: el componente TsgcAMQPClient conecta aplicaciones Delphi y C++ Builder con brókers AMQP, implementando tanto AMQP 0.9.1 como AMQP 1.0 con canales, exchanges, colas, acknowledgments y transacciones contra RabbitMQ y Azure Service Bus.

¿Qué es AMQP?

AMQP es un estándar abierto de mensajería empresarial que ofrece entrega de mensajes fiable e interoperable entre distintas plataformas e implementaciones.

Cola de mensajes de calidad empresarial

AMQP define un protocolo a nivel de cable para middleware orientado a mensajes, garantizando una interoperabilidad real entre implementaciones de distintos fabricantes. Su sofisticado modelo de enrutamiento basado en exchanges, colas y bindings admite patrones de mensajería complejos como enrutamiento directo, por topic, fan-out y por cabeceras. sgcWebSockets implementa tanto AMQP 0.9.1 (la versión ampliamente desplegada que utiliza RabbitMQ) como AMQP 1.0 (el estándar OASIS utilizado por Azure Service Bus), proporcionándote la máxima flexibilidad.

  • Protocolo a nivel de cable que garantiza la interoperabilidad entre fabricantes
  • Enrutamiento flexible con exchanges, colas y bindings
  • Entrega garantizada de mensajes con confirmaciones (acknowledgments)
  • Compatible con AMQP 0.9.1 y 1.0
PRODUCER EXCH Q1 Q2 CONSUMER

Características de AMQP

Funciones de mensajería de nivel industrial para aplicaciones de misión crítica.

Entrega fiable de mensajes

Los mensajes nunca se pierden gracias a los publisher confirms y a los acknowledgments del consumidor, que garantizan la entrega de extremo a extremo.

Modelo Exchange/Queue/Binding

Enrutamiento flexible a través de exchanges direct, topic, fanout y headers vinculados a colas con routing keys configurables.

Confirmación de mensajes (Acknowledgment)

Los consumidores confirman explícitamente los mensajes procesados. Los mensajes no confirmados se vuelven a encolar automáticamente para su reentrega.

Transacciones

Agrupa operaciones de publicación y confirmación en transacciones atómicas que se completan en su totalidad o se revierten por completo.

Control de flujo

El control de flujo integrado evita que los productores rápidos saturen a los consumidores lentos, asegurando un rendimiento estable del sistema.

Multiplexación de canales

Varios canales lógicos sobre una única conexión TCP, reduciendo la sobrecarga de conexión y manteniendo el aislamiento.

RabbitMQ y Azure Service Bus

Probado y verificado con RabbitMQ (AMQP 0.9.1) y Azure Service Bus (AMQP 1.0) para despliegues en producción.

Casos de uso de AMQP

Escenarios de mensajería de misión crítica donde la fiabilidad y la interoperabilidad son fundamentales.

Procesamiento de transacciones financieras

Procesa transacciones financieras con entrega garantizada y semántica exactly-once para sistemas bancarios y de pagos.

Gestión de pedidos

Gestiona flujos de trabajo de pedidos con cola de mensajes fiable entre los sistemas de entrada de pedidos, preparación, envío y notificación.

Enterprise Service Bus

Construye un bus de servicios empresarial que conecte sistemas dispares con entrega de mensajes asíncrona y fiable.

Computación distribuida

Distribuye el trabajo entre múltiples nodos de procesamiento con colas de tareas y patrones de recogida de resultados.

Registro de auditoría

Captura y enruta eventos de auditoría a los sistemas de logging con entrega garantizada, evitando la pérdida de entradas del registro de auditoría.

Ejemplo Delphi AMQP

Conecta a un bróker AMQP, declara colas e intercambia mensajes.

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;

Casos de uso de AMQP

Preguntas habituales sobre la mensajería con colas AMQP desde Delphi y C++ Builder.

Crea un TsgcAMQPClient, establece su Host, Port, Authentication y VirtualHost, y luego llama a Connect. Desde el evento OnAMQPConnect abres un canal con OpenChannel, declaras una cola con DeclareQueue y empiezas a recibir con BasicConsume. Envías mensajes con BasicPublish y los confirmas con BasicAck.
El cliente implementa tanto AMQP 0.9.1, la versión ampliamente desplegada que usa RabbitMQ, como AMQP 1.0, el estándar de OASIS que usa Azure Service Bus. Está probado y verificado contra RabbitMQ y Azure Service Bus para despliegues en producción, y el protocolo a nivel de cable garantiza la interoperabilidad con otros brókers conformes.
Sí. Las confirmaciones de publicación y los acknowledgments del consumidor proporcionan garantías de entrega de extremo a extremo, los mensajes no confirmados se vuelven a encolar automáticamente, y puedes agrupar operaciones de publicación y confirmación en transacciones atómicas. El modelo de exchange, cola y binding admite enrutamiento direct, topic, fanout y headers, con multiplexación de canales sobre una única conexión.
sgcWebSockets es compatible desde Delphi 7 hasta la última versión de Delphi y las versiones de C++ Builder correspondientes, en Windows, macOS, Linux, iOS y Android. Descarga la prueba gratuita para evaluar el cliente AMQP en tu propio proyecto.

¿Listo para empezar con AMQP?

Descarga la prueba gratuita y conecta con brókers de mensajería empresariales en minutos.