Cliente AMQP para Delphi

Advanced Message Queuing Protocol para mensageria corporativa confiável. Suporte completo a AMQP 0.9.1 e 1.0, compatível com RabbitMQ e Azure Service Bus.

Resposta rápida: o componente TsgcAMQPClient conecta aplicativos Delphi e C++ Builder a brokers AMQP, implementando tanto o AMQP 0.9.1 quanto o AMQP 1.0 com channels, exchanges, queues, acknowledgments e transações com RabbitMQ e Azure Service Bus.

O que é o AMQP?

O AMQP é um padrão aberto de mensageria corporativa que oferece entrega de mensagens confiável e interoperável entre diferentes plataformas e implementações.

Filas de mensagens de nível corporativo

O AMQP define um protocolo em nível de fio para middleware orientado a mensagens, garantindo interoperabilidade real entre implementações de diferentes fornecedores. Seu sofisticado modelo de roteamento, baseado em exchanges, filas e bindings, suporta padrões complexos de mensageria, incluindo roteamento direto, roteamento por tópico, fan-out e roteamento por cabeçalho. O sgcWebSockets implementa tanto o AMQP 0.9.1 (a versão amplamente utilizada pelo RabbitMQ) quanto o AMQP 1.0 (o padrão OASIS usado pelo Azure Service Bus), oferecendo máxima flexibilidade.

  • O protocolo em nível de fio garante interoperabilidade entre fornecedores
  • Roteamento flexível com exchanges, filas e bindings
  • Entrega garantida de mensagens com confirmações
  • Suporte a AMQP 0.9.1 e 1.0
PRODUTOR EXCH Q1 Q2 CONSUMIDOR

Recursos do AMQP

Recursos de mensageria de nível industrial para aplicações críticas.

Entrega confiável de mensagens

As mensagens nunca se perdem: publisher confirms e confirmações do consumidor garantem a entrega de ponta a ponta.

Exchange/Queue/Binding Model

Roteamento flexível por exchanges direct, topic, fanout e headers vinculadas a filas com routing keys configuráveis.

Confirmação de mensagens

Os consumidores confirmam explicitamente as mensagens processadas. As mensagens não confirmadas voltam automaticamente para a fila para reentrega.

Transações

Agrupe operações de publicação e confirmação em transações atômicas que são concluídas por inteiro ou revertidas por inteiro.

Controle de fluxo

O controle de fluxo integrado impede que produtores rápidos sobrecarreguem consumidores lentos, garantindo desempenho estável do sistema.

Multiplexação de canais

Vários canais lógicos sobre uma única conexão TCP, reduzindo o overhead de conexão e mantendo o isolamento.

RabbitMQ & Azure Service Bus

Testado e verificado com RabbitMQ (AMQP 0.9.1) e Azure Service Bus (AMQP 1.0) para implantações em produção.

Casos de uso do AMQP

Cenários de mensageria crítica em que a confiabilidade e a interoperabilidade são essenciais.

Processamento de transações financeiras

Processe transações financeiras com entrega garantida e semântica exactly-once para sistemas bancários e de pagamento.

Gerenciamento de pedidos

Gerencie fluxos de pedidos com filas de mensagens confiáveis entre os sistemas de entrada de pedidos, atendimento, expedição e notificação.

Barramento de serviços corporativo

Crie um barramento de serviços corporativo que conecta sistemas distintos com entrega de mensagens assíncrona e confiável.

Computação distribuída

Distribua o trabalho entre vários nós de processamento com filas de tarefas e padrões de coleta de resultados.

Registro de auditoria

Capture e encaminhe eventos de auditoria para sistemas de log com entrega garantida, sem perder nenhum registro da trilha de auditoria.

Exemplo de AMQP em Delphi

Conecte-se a um broker AMQP, declare filas e troque mensagens.

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 do AMQP

Dúvidas comuns sobre enfileiramento de mensagens AMQP a partir do Delphi e C++ Builder.

Crie um TsgcAMQPClient, defina seu Host, Port, Authentication e VirtualHost e, em seguida, chame Connect. A partir do evento OnAMQPConnect você abre um channel com OpenChannel, declara uma queue com DeclareQueue e começa a receber com BasicConsume. Envie mensagens com BasicPublish e confirme-as com BasicAck.
O client implementa tanto o AMQP 0.9.1, a versão amplamente implantada usada pelo RabbitMQ, quanto o AMQP 1.0, o padrão OASIS usado pelo Azure Service Bus. Ele é testado e verificado com RabbitMQ e Azure Service Bus para implantações em produção, e o protocolo a nível de transmissão garante interoperabilidade com outros brokers compatíveis.
Sim. Os publisher confirms e os consumer acknowledgments fornecem garantias de entrega de ponta a ponta, mensagens não confirmadas são automaticamente recolocadas na fila e você pode agrupar operações de publicação e confirmação em transações atômicas. O modelo de exchange, queue e binding suporta roteamento direct, topic, fanout e headers, com multiplexação de channels sobre uma única conexão.
O sgcWebSockets suporta do Delphi 7 até o mais recente lançamento do Delphi e as versões correspondentes do C++ Builder, no Windows, macOS, Linux, iOS e Android. Baixe a versão de avaliação gratuita para avaliar o client AMQP no seu próprio projeto.
Melhor custo-benefício: All-AccessTodos os produtos da eSeGeCe, com Suporte Premium incluído, a partir de €1,059/ano.
Ver preços do All-Access

Ready to Get Started with AMQP?

Baixe a versão de avaliação gratuita e conecte-se a brokers de mensagens corporativos em minutos.