[rabbitmq-discuss] RabbitMQ 1.7.0 close the cnx when consumer don't ack deliveries during 30s
Vincent Barat
vbarat at ubikod.com
Thu Jul 15 20:43:37 BST 2010
Hi again,
You are definitively right! I will update my code that will work
perfectly now I'm sure :-)
Thank you so much for your help!
Le 15/07/10 17:09, Simon MacMullen a écrit :
> On 15/07/10 15:35, Vincent Barat wrote:
>> I got my fix: here is what I do:
>>
>> 1- I use basicQos() to be sure that the server will not send "too
>> many"
>> messages (actually, I have checked that basicQos() does not offers a
>> guarantee on the number of un-acknoledged messages sent, since I
>> actually receive much more than the parameter I give, but it
>> seems at
>> least to limit the amount of messages, maybe there is a bug here ?).
>
> Hi Vincent. I don't think there's a bug in our handling of
> basic.qos - it's been around for a while and a lot of people are
> using it successfully.
>
> I notice that in onNewChannel():
>
> @Override
> protected void onNewChannel(Channel channel) throws IOException
> {
> super.onNewChannel(channel);
>
> /*
> * Configure the channel to send not more than a given amount
> of unacknowledged messages. This
> * avoid at the same time to buffer too many messages (which
> could exhaust memory) and to block
> * in handleDelivery() (which could brake the connection).
> */
> channel.basicQos(capacity);
> }
>
> You invoke channel.basicQos() after super.onNewChannel(). Does
> super.onNewChannel() invoke channel.basicConsume() by any chance?
> If it does so then the server can start sending an unlimited
> number of messages as soon as it receives this message - it'll
> only start limiting the number it sends out after receiving
> basic.qos. Therefore it's usually better to send basic.qos before
> basic.consume.
>
> Cheers, Simon
>
More information about the rabbitmq-discuss
mailing list