[rabbitmq-discuss] until clients support Channel.Flow in 1.5.0+...

Matthias Radestock matthias at lshift.net
Fri Nov 21 08:03:28 GMT 2008


Brian,

Ben wrote:
> If the client ignores the server initiated command, then the server
> will just accept this until it dies.
> We could fix this, I suppose.

and then Brian Sullivan wrote:

> Is there any reason we *wouldn't* want that behavior?  I might be  
> coming from a paranoid place where I fear my ProducersOfDeath, but it  
> really seems like a better idea to protect the server from crashing in  
> these cases...
> 
> This fix is small enough to include in 1.5.0, I hope?

The main difficulty is figuring out that the client really is ignoring 
the request from the server, rather than just being a bit slow in 
dealing with it.

We do know a client is not respecting the request if it either 
explicitly rejects the channel.flow request or accepts it and then 
continues to send messages.

But when a client does not respond to channel.flow at all and just keeps 
sending messages then we simply have no idea whether that is because it 
is ignoring the server's request or because it just has not gotten round 
to dealing with it yet.

We could introduce some sort of timeout to handle this case. There may 
be other approaches too.

Implementation-wise that is all far more complex to deal with than what 
we currently have. So for 1.5.0 the channel.flow implementation will 
depend on compliant clients. All the clients we ship will be compliant. 
Furthermore, in our experience it is not very difficult to incorporate 
channel.flow handling in an existing client.


Regards,

Matthias.




More information about the rabbitmq-discuss mailing list