AMQP Consume Messages

소비자는 큐에서 소비합니다. 메시지를 소비하려면 큐가 있어야 합니다. 새 소비자가 추가될 때 큐에 이미 준비된 메시지가 있다고 가정하면 전달이 즉시 시작됩니다.

대상 큐는 소비자 등록 시점에 비어 있을 수 있습니다. 이 경우 새 메시지가 큐에 추가될 때 첫 전달이 발생합니다.

 

메시지 소비는 비동기 작업이며, 이는 새 메시지가 소비자 큐에 전달될 수 있을 때마다 서버에 의해 자동으로 클라이언트로 푸시됨을 의미합니다. 동기적으로 메시지 수신하는 대체 방법을 읽을 수 있습니다.

 

Consume

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 메서드를 호출하기만 하면 동기 호출을 수행할 수 있으며, 이 메서드는 Consumer가 생성되었으면 true를, 서버로부터 확인이 도착하지 않았으면 false를 반환합니다.

 

Cancel Consume

이 메서드는 기존 consumer queue를 Cancel하는 데 사용됩니다.

 

메서드에는 다음 인수가 있습니다:

 

 


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 메서드를 호출하기만 하면 동기 호출을 수행할 수 있으며, 이 메서드는 Consumer가 취소되면 true를, 서버로부터 확인이 도착하지 않으면 false를 반환합니다.