When a channel deliveries messages to a receiver that can only accept x messages, the channel delivers as many messages as it can until the receiver returns null to signify it doesn't want any more.
There is a problem with this in a clustered setup, when pulling messages from a remote queue.
The channel will deliver as many messages it can from the local queue, and then, if the receiver is still ready, in some situations will start pulling
messages from a remote queue.
So what can happen is the local queue pulls a message from the remote queue then offers it to the receiver which returns null because it is now full, so we have unnecessaily retrieved a message.
But the receiver knows it is full after accepting the last message.
So I suggest we add a flag on simple delivery to signify "receiver now full", this prevents the channel having to try delivery only to find it is rejected.
Any other solutions ideas?