AMQP Consume Messages

コンシューマーはキューから消費します。メッセージを消費するにはキューが必要です。新しいコンシューマーが追加されると、キューにすでにメッセージが準備されている場合、配信は即座に開始されます。

コンシューマー登録時にターゲットキューが空の場合があります。その場合、新しいメッセージがエンキューされたときに最初の配信が行われます。

 

メッセージの消費は非同期タスクです。これは、コンシューマーキューに新しいメッセージを配信できるたびに、サーバーからクライアントに自動的にプッシュされることを意味します。同期的にメッセージを受信する代替方法を参照してください。

 

消費

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 を返します。

 

Cancel Consume

このメソッドは、既存のコンシューマーキューをキャンセルするために使用されます。

 

このメソッドには以下の引数があります:

 

 


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 を返します。