Il recupero dei messaggi è un'operazione Sincrona, il che significa che è il client a chiedere al server se ci sono messaggi in coda. È possibile consultare un metodo alternativo per Ricevere messaggi in modo asincrono.
Il metodo GetMessage invia una richiesta al server AMQP chiedendo se sono disponibili messaggi in una coda. Se ci sono messaggi, questi verranno inviati tramite l'evento OnAMQPBasicGetOk e se la coda è vuota, verrà chiamato l'evento OnAMQPBasicGetEmpty.
Il metodo ha i seguenti argomenti:
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;
È possibile effettuare una chiamata sincrona chiamando semplicemente il metodo GetMessageEx; questo metodo restituisce true se la coda contiene messaggi disponibili, altrimenti il risultato sarà false.