메시지를 가져오는 것은 Synchronous 작업입니다. 즉, 큐에 메시지가 있는지 서버에 묻는 것은 클라이언트입니다. 메시지를 비동기적으로 수신하는 대체 방법을 읽을 수 있습니다.
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가 됩니다.