消费者从队列中消费消息。为了消费消息,必须存在一个队列。添加新消费者后,假设队列中已有就绪消息,投递将立即开始。
消费者注册时目标队列可以为空。在这种情况下,当新消息入队后,首次投递才会发生。
消费消息是一项异步任务,这意味着每当有新消息可以投递到消费者队列时,服务器会自动将其推送给客户端。您可以阅读另一种同步接收消息的方法。
方法 Consume 在队列中创建一个新消费者,每当有新消息时,该消息将自动传送给消费者客户端。
该方法具有以下参数:
消息通过 OnAMQPBasicDeliver 事件传递。
AMQP.Consume('channel_name', 'queue_name', 'consumer_tag');
procedure OnAMQPBasicDeliver(Sender: TObject;
const aChannel: string;
const aDeliver: TsgcAMQPFramePayload_Method_BasicDeliver;
const aContent: TsgcAMQPMessageContent);
begin
DoLog('#AMQP_basic_deliver: ' + aChannel + ' ' + aDeliver.ConsumerTag + ' ' +
' ' + aContent.Body.AsString);
end;
也可以直接调用 ConsumeEx 方法进行同步调用,该方法在消费者已创建时返回 true,在未收到服务器确认时返回 false。
此方法用于取消现有的消费者队列。
该方法具有以下参数:
AMQP.CancelConsume('channel_name', 'consumer_tag');
procedure OnAMQPBasicCancelConsume(Sender: TObject; const aChannel: string; const aConsumerTag);
begin
DoLog('#AMQP_basic_cancel_consume: ' + aChannel + ' ' + aConsumerTag);
end;
也可通过调用方法 CancelConsumeEx 进行同步调用,该方法在消费者已取消时返回 True,在未收到服务器确认时返回 False。