Mesaj almak Eşzamanlı bir görevdir, bu da sunucuya kuyrukta mesaj olup olmadığını soranın istemci olduğu anlamına gelir. Mesajı Eşzamansız Olarak Alma alternatif yöntemini okuyabilirsiniz.
GetMessage yöntemi, bir kuyrukta mevcut mesaj olup olmadığını soran AMQP sunucusuna bir istek gönderir. Mesaj varsa bunlar OnAMQPBasicGetOk olayı aracılığıyla gönderilir ve kuyruk boşsa, OnAMQPBasicGetEmpty olayı çağrılır.
Yöntemin aşağıdaki argümanları vardır:
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;
Eşzamanlı bir çağrı, sadece GetMessageEx yöntemi çağrılarak yapılabilir, bu yöntem kuyrukta kullanılabilir mesajlar varsa true, aksi takdirde sonuç false olur.