Tüketiciler kuyruklardan tüketir. Mesajları tüketmek için bir kuyruk olmalıdır. Yeni bir tüketici eklendiğinde, kuyrukta zaten hazır mesajlar olduğu varsayılarak, teslimler hemen başlar.
Hedef kuyruk, tüketici kaydı sırasında boş olabilir. Bu durumda ilk teslimatlar yeni mesajlar kuyruğa alındığında gerçekleşir.
Mesajları tüketmek asenkron bir görevdir; bu, tüketici kuyruğuna her yeni mesaj teslim edilebildiğinde, sunucu tarafından istemciye otomatik olarak gönderildiği anlamına gelir. Mesajı Senkronize Olarak Alma için alternatif bir yöntem okuyabilirsiniz.
Consume yöntemi kuyrukta yeni bir tüketici oluşturur ve her yeni mesaj olduğunda bu, tüketici istemcisine otomatik olarak teslim edilir.
Yöntemin aşağıdaki argümanları vardır:
Mesajlar OnAMQPBasicDeliver olayı aracılığıyla teslim edilir.
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 yöntemini çağırarak senkron bir çağrı yapılabilir, bu yöntem Consumer oluşturulmuşsa true ve sunucudan onay gelmemişse false döndürür.
Bu yöntem, mevcut bir tüketici kuyruğunu İptal etmek için kullanılır.
Yöntemin aşağıdaki argümanları vardır:
AMQP.CancelConsume('channel_name', 'consumer_tag');
procedure OnAMQPBasicCancelConsume(Sender: TObject; const aChannel: string; const aConsumerTag);
begin
DoLog('#AMQP_basic_cancel_consume: ' + aChannel + ' ' + aConsumerTag);
end;
Senkron bir çağrı, yalnızca CancelConsumeEx yöntemi çağrılarak yapılabilir; bu yöntem, Consumer iptal edilmişse true, sunucudan onay gelmemişse false döndürür.