I consumer consumano dalle code. Per consumare messaggi deve esistere una coda. Quando viene aggiunto un nuovo consumer, supponendo che siano già presenti messaggi pronti nella coda, le consegne inizieranno immediatamente.
La coda di destinazione può essere vuota al momento della registrazione del consumer. In tal caso le prime consegne avverranno quando verranno accodati nuovi messaggi.
Il consumo di messaggi è un'attività asincrona, il che significa che ogni volta che un nuovo messaggio può essere consegnato alla coda del consumatore, viene inviato automaticamente dal server al client. È possibile consultare un metodo alternativo per ricevere messaggi in modo sincrono.
Il metodo Consume crea un nuovo consumer nella coda e ogni volta che è presente un nuovo messaggio questo verrà recapitato automaticamente al client consumer.
Il metodo ha i seguenti argomenti:
I messaggi vengono consegnati nell'evento 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;
Una chiamata sincrona può essere effettuata chiamando il metodo ConsumeEx; questo metodo restituisce true se il Consumer è stato creato e false se non è arrivata alcuna conferma dal server.
Questo metodo viene utilizzato per annullare una coda consumer esistente.
Il metodo ha i seguenti argomenti:
AMQP.CancelConsume('channel_name', 'consumer_tag');
procedure OnAMQPBasicCancelConsume(Sender: TObject; const aChannel: string; const aConsumerTag);
begin
DoLog('#AMQP_basic_cancel_consume: ' + aChannel + ' ' + aConsumerTag);
end;
È possibile effettuare una chiamata sincrona chiamando il metodo CancelConsumeEx; questo metodo restituisce true se il Consumer è stato annullato e false se non è arrivata alcuna conferma dal server.