I'm using RabbitMQ &nbsp;3.1.3 with .NET client library.<div><br></div><div>I'm receiving messages using BasicConsume which puts them in List, then I take them from a List in other thread, and do:</div><div>channel.TxStart()</div><div>try</div><div>{</div><div>HandleMessage(qMessage);</div><div>channel.BasicAck(qMessage.DeliveryTag)</div><div>}</div><div>catch</div><div>{</div><div>&nbsp;channel.BasicReject(qMessage,DeliveryTag, false); //I want to delete messages I can't process</div><div>}</div><div>finally</div><div>{</div><div>channel.TxCommit();</div><div>}</div><div><br></div><div>Message is marked as Nack, but it remains in queue, and when channel is closed message returns to Ready state.</div><div><br></div><div>I'm pulling hairs out of my head how such simple 3 lines of code couldn't work.</div>