Berichten ophalen is een Synchrone taak, wat betekent dat het de client is die de server vraagt of er berichten in de wachtrij zijn. U kunt een alternatieve methode lezen om Berichten asynchroon te ontvangen.
De methode GetMessage stuurt een verzoek naar de AMQP-server om te vragen of er berichten beschikbaar zijn in een wachtrij. Als er berichten zijn, worden deze gedistribueerd via de gebeurtenis OnAMQPBasicGetOk en als de wachtrij leeg is, wordt de gebeurtenis OnAMQPBasicGetEmpty aangeroepen.
De methode has het volgende arguments:
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;
Een synchrone aanroep kan worden gedaan door de methode GetMessageEx aan te roepen; deze methode retourneert true als de wachtrij berichten bevat, anders is het resultaat false.