メッセージの取得は同期タスクであり、つまりクライアントがキューにメッセージがあるかどうかをサーバーに尋ねます。メッセージを非同期に受信する代替方法を読むことができます。
GetMessage メソッドは、キューにメッセージがあるかどうかを確認するリクエストを AMQP サーバーに送信します。メッセージがある場合は OnAMQPBasicGetOk イベントでディスパッチされ、キューが空の場合は OnAMQPBasicGetEmpty イベントが呼び出されます。
このメソッドには以下の引数があります:
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;
同期呼び出しは GetMessageEx メソッドを呼び出すだけで実行できます。このメソッドはキューにメッセージがある場合は True を返し、それ以外の場合は False を返します。