Pobieranie wiadomości jest zadaniem Synchronicznym, co oznacza, że to klient pyta serwer, czy w kolejce znajdują się wiadomości. Alternatywną metodę opisano w sekcji Asynchroniczne odbieranie wiadomości.
Metoda GetMessage wysyła żądanie do serwera AMQP z pytaniem, czy w kolejce są dostępne wiadomości. Jeśli są, zostaną dostarczone przez zdarzenie OnAMQPBasicGetOk; jeśli kolejka jest pusta, wywoływane jest zdarzenie OnAMQPBasicGetEmpty.
Metoda przyjmuje następujące argumenty:
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;
Wywołanie synchroniczne można wykonać, wywołując metodę GetMessageEx; metoda zwraca True, jeśli w kolejce są dostępne wiadomości, w przeciwnym razie zwraca False.