Obter mensagens é uma tarefa Síncrona, o que significa que é o cliente que pergunta ao servidor se há mensagens na fila. Você pode ler um método alternativo para Receber Mensagem de Forma Assíncrona.
O método GetMessage envia uma requisição ao servidor AMQP perguntando se há mensagens disponíveis em uma fila. Se houver mensagens, elas serão despachadas no evento OnAMQPBasicGetOk e, se a fila estiver vazia, o evento OnAMQPBasicGetEmpty será chamado.
O método tem os seguintes argumentos:
AMQP.GetMessage('channel_name', 'queue_name');
procedure OnAMQPBasicGetOk(Sender: TObject; const aChannel: string;
const aGetOk: TsgcAMQPFramePayload_Method_BasicGetOk;
const aContent: TsgcAMQPMessageContent);
begin
DoLog('#AMQP_basic_GetOk: ' + aChannel + ' ' + IntToStr(aGetOk.MessageCount) + ' ' + aContent.Body.AsString);
end;
procedure OnAMQPBasicGetEmpty(Sender: TObject; const aChannel: string);
begin
DoLog('#AMQP_basic_GetEmpty: ' + aChannel);
end;
Uma chamada Síncrona pode ser feita apenas chamando o método GetMessageEx; este método retorna true se a fila tiver mensagens disponíveis, caso contrário, o resultado será false.