* when waiting for a request to become available
* @throws InterruptedException
* when waiting for a request to become available the current {@link Thread} was interrupted
*/
public MessageExchange take() throws BufferStoppedException, InterruptedException {
MessageExchange currentExchange = null;
try {
idleConsumers.getAndIncrement();
currentExchange = requests.take();
} finally {
idleConsumers.getAndDecrement();