[rabbitmq-discuss] rabbitmq java client keeps pulling data?
    DeepNightTwo 
    DeepNightTwo at gmail.com
       
    Fri Sep 19 09:08:48 BST 2014
    
    
  
Is it designed so for some purpose? My understanding is, if a fixed-size
queue is used to create a consumer, it is expected the consumer should stop
pulling data if the queue is full. 
I extends from QueueingConsumer and it works for me. 
class BlockingConsumer extends QueueingConsumer {
    private BlockingQueue<Delivery> q;
    public BlockingConsumer(Channel ch) {
        super(ch);
    }
    public BlockingConsumer(Channel ch, LinkedBlockingDeque<Delivery> q) {
        super(ch, q);
        this.q = q;
    }
    @Override
    public void handleDelivery(String consumerTag, Envelope envelope,
AMQP.BasicProperties properties, byte[] body) throws IOException {
        if (q == null) {
            super.handleDelivery(consumerTag, envelope, properties, body);
        } else {
            try {
                this.q.put(new Delivery(envelope, properties, body));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
q.put will block until the queue has a slot available. But I'm not sure if
this will bring network issue. For example, if the queue keeps full, will
the connection be timeout/reset?
And this impl is ugly. 
Because the _queue is private, I have to store a reference in subclass. And
because the _checkShutdown method is private, I didn't invoke it in the sub
class.
--
View this message in context: http://rabbitmq.1065348.n5.nabble.com/rabbitmq-java-client-keeps-pulling-data-tp37080p37082.html
Sent from the RabbitMQ mailing list archive at Nabble.com.
    
    
More information about the rabbitmq-discuss
mailing list