获取消息是一个 同步任务,这意味着是客户端向服务器询问队列中是否有消息。您可以阅读异步接收消息的替代方法。
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。