コンシューマーはキューから消費します。メッセージを消費するにはキューが必要です。新しいコンシューマーが追加されると、キューにすでにメッセージが準備されている場合、配信は即座に開始されます。
コンシューマー登録時にターゲットキューが空の場合があります。その場合、新しいメッセージがエンキューされたときに最初の配信が行われます。
メッセージの消費は非同期タスクです。これは、コンシューマーキューに新しいメッセージを配信できるたびに、サーバーからクライアントに自動的にプッシュされることを意味します。同期的にメッセージを受信する代替方法を参照してください。
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 を返します。