Class QueueingConsumer
- java.lang.Object
 - 
- com.rabbitmq.client.DefaultConsumer
 - 
- com.rabbitmq.client.QueueingConsumer
 
 
 
- 
- All Implemented Interfaces:
 Consumer
public class QueueingConsumer extends DefaultConsumer
Deprecated.Convenience class: an implementation ofConsumerwith straightforward blocking semantics. Deprecated in favor ofDefaultConsumer(see below for background). Will be removed in next major release. The general pattern for using QueueingConsumer is as follows:// Create connection and channel.
ConnectionFactoryfactory = new ConnectionFactory(); Connection conn = factory.newConnection();Channelch1 = conn.createChannel(); // Declare a queue and bind it to an exchange. String queueName = ch1.queueDeclare().getQueue(); ch1.queueBind(queueName, exchangeName, queueName); // Create the QueueingConsumer and have it consume from the queue QueueingConsumer consumer = newQueueingConsumer(ch1); ch1.basicConsume(queueName, false, consumer); // Process deliveries while (/* some condition * /) {QueueingConsumer.Deliverydelivery = consumer.nextDelivery(); // process delivery ch1.basicAck(delivery.getEnvelope().getDeliveryTag(), false); }For a more complete example, see LogTail in the
test/src/com/rabbitmq/examplesdirectory of the source distribution.Historical Perspective
QueueingConsumerwas introduced to allow applications to overcome a limitation in the wayConnectionmanaged threads and consumer dispatching. WhenQueueingConsumerwas introduced, callbacks toConsumerswere made on theConnection'sthread. This had two main drawbacks. Firstly, theConsumercould stall the processing of allChannelson theConnection. Secondly, if aConsumermade a recursive synchronous call into itsChannelthe client would deadlock.QueueingConsumerprovided client code with an easy way to obviate this problem by queueing incoming messages and processing them on a separate, application-managed thread.The threading behaviour of
ConnectionandChannelhas been changed so that eachChanneluses a distinct thread for dispatching toConsumers. This preventsConsumerson oneChannelholding upConsumerson another and it also prevents recursive calls from deadlocking the client. As such, it is now safe to implementConsumerdirectly or to extendDefaultConsumerandQueueingConsumeris a lot less relevant. 
- 
- 
Nested Class Summary
Nested Classes Modifier and Type Class Description static classQueueingConsumer.DeliveryDeprecated.Encapsulates an arbitrary message - simple "bean" holder structure. 
- 
Constructor Summary
Constructors Constructor Description QueueingConsumer(Channel ch)Deprecated.QueueingConsumer(Channel ch, BlockingQueue<QueueingConsumer.Delivery> q)Deprecated. 
- 
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidhandleCancel(String consumerTag)Deprecated.No-op implementation ofConsumer.handleCancel(String)voidhandleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)Deprecated.voidhandleShutdownSignal(String consumerTag, ShutdownSignalException sig)Deprecated.No-op implementation ofConsumer.handleShutdownSignal(java.lang.String, com.rabbitmq.client.ShutdownSignalException).QueueingConsumer.DeliverynextDelivery()Deprecated.Main application-side API: wait for the next message delivery and return it.QueueingConsumer.DeliverynextDelivery(long timeout)Deprecated.Main application-side API: wait for the next message delivery and return it.- 
Methods inherited from class com.rabbitmq.client.DefaultConsumer
getChannel, getConsumerTag, handleCancelOk, handleConsumeOk, handleRecoverOk 
 - 
 
 - 
 
- 
- 
Constructor Detail
- 
QueueingConsumer
public QueueingConsumer(Channel ch)
Deprecated. 
- 
QueueingConsumer
public QueueingConsumer(Channel ch, BlockingQueue<QueueingConsumer.Delivery> q)
Deprecated. 
 - 
 
- 
Method Detail
- 
handleShutdownSignal
public void handleShutdownSignal(String consumerTag, ShutdownSignalException sig)
Deprecated.Description copied from class:DefaultConsumerNo-op implementation ofConsumer.handleShutdownSignal(java.lang.String, com.rabbitmq.client.ShutdownSignalException).- Specified by:
 handleShutdownSignalin interfaceConsumer- Overrides:
 handleShutdownSignalin classDefaultConsumer- Parameters:
 consumerTag- the consumer tag associated with the consumersig- aShutdownSignalExceptionindicating the reason for the shut down
 
- 
handleCancel
public void handleCancel(String consumerTag) throws IOException
Deprecated.Description copied from class:DefaultConsumerNo-op implementation ofConsumer.handleCancel(String)- Specified by:
 handleCancelin interfaceConsumer- Overrides:
 handleCancelin classDefaultConsumer- Parameters:
 consumerTag- the defined consumer tag (client- or server-generated)- Throws:
 IOException
 
- 
handleDelivery
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException
Deprecated.Description copied from class:DefaultConsumerNo-op implementation ofConsumer.handleDelivery(java.lang.String, com.rabbitmq.client.Envelope, com.rabbitmq.client.AMQP.BasicProperties, byte[]).- Specified by:
 handleDeliveryin interfaceConsumer- Overrides:
 handleDeliveryin classDefaultConsumer- Parameters:
 consumerTag- the consumer tag associated with the consumerenvelope- packaging data for the messageproperties- content header data for the messagebody- the message body (opaque, client-specific byte array)- Throws:
 IOException- if the consumer encounters an I/O error while processing the message- See Also:
 Envelope
 
- 
nextDelivery
public QueueingConsumer.Delivery nextDelivery() throws InterruptedException, ShutdownSignalException, ConsumerCancelledException
Deprecated.Main application-side API: wait for the next message delivery and return it.- Returns:
 - the next message
 - Throws:
 InterruptedException- if an interrupt is received while waitingShutdownSignalException- if the connection is shut down while waitingConsumerCancelledException- if this consumer is cancelled while waiting
 
- 
nextDelivery
public QueueingConsumer.Delivery nextDelivery(long timeout) throws InterruptedException, ShutdownSignalException, ConsumerCancelledException
Deprecated.Main application-side API: wait for the next message delivery and return it.- Parameters:
 timeout- timeout in millisecond- Returns:
 - the next message or null if timed out
 - Throws:
 InterruptedException- if an interrupt is received while waitingShutdownSignalException- if the connection is shut down while waitingConsumerCancelledException- if this consumer is cancelled while waiting
 
 - 
 
 -