Os consumidores consomem de filas. Para consumir mensagens, deve haver uma fila. Quando um novo consumidor é adicionado, supondo que já existam mensagens prontas na fila, as entregas começarão imediatamente.
A fila de destino pode estar vazia no momento do registro do consumidor. Nesse caso, as primeiras entregas ocorrerão quando novas mensagens forem enfileiradas.
Consumir mensagens é uma tarefa assíncrona, o que significa que toda vez que uma nova mensagem pode ser entregue à fila do consumidor, ela é enviada pelo servidor ao cliente automaticamente. Você pode ler um método alternativo em Receber Mensagem de Forma Síncrona.
O método Consume cria um novo consumidor na fila, e toda vez que houver uma nova mensagem, ela será entregue automaticamente ao cliente consumidor.
O método tem os seguintes argumentos:
As mensagens são entregues no evento OnAMQPBasicDeliver .
AMQP.Consume('channel_name', 'queue_name', 'consumer_tag');
procedure OnAMQPBasicDeliver(Sender: TObject;
const aChannel: string;
const aDeliver: TsgcAMQPFramePayload_Method_BasicDeliver;
const aContent: TsgcAMQPMessageContent);
begin
DoLog('#AMQP_basic_deliver: ' + aChannel + ' ' + aDeliver.ConsumerTag + ' ' +
' ' + aContent.Body.AsString);
end;
Uma chamada Síncrona pode ser feita apenas chamando o método ConsumeEx; este método retorna true se o Consumer foi criado e false se nenhuma confirmação do servidor chegou.
Este método é usado para Cancelar uma fila de consumidor existente.
O método tem os seguintes argumentos:
AMQP.CancelConsume('channel_name', 'consumer_tag');
procedure OnAMQPBasicCancelConsume(Sender: TObject; const aChannel: string; const aConsumerTag);
begin
DoLog('#AMQP_basic_cancel_consume: ' + aChannel + ' ' + aConsumerTag);
end;
Uma chamada síncrona pode ser feita simplesmente chamando o método CancelConsumeEx; este método retorna true se o Consumer foi cancelado e false se nenhuma confirmação do servidor chegou.