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.

¿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;

¿Listo para empezar con AMQP?

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