When using publisher confirms with the C# code, there is a bug in the client when experiencing any significant load. &nbsp;The offending code is in the client "RabbitMQ.Client.Impl.ModelBase" class in the "BasicPublish" method. &nbsp;<div><br></div><div><div>&nbsp; &nbsp; if (m_nextPubSeqNo &gt; 0) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_unconfirmedSet.<b>Add</b>(m_nextPubSeqNo, null);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; m_nextPubSeqNo++;</div><div>&nbsp; &nbsp; }</div><div><br></div><div>It looks like there are multiple threads hitting the bolded "<b>Add</b>" method before the sequence number is incremented in the next line leading to duplicate key exceptions being thrown by the "m_unconfirmedSet" sorted list. &nbsp;&nbsp;This code either needs to have a lock around it or have m_nextPubSeqNo change to a long so that "Interlocked.Increment" can be used in the assignment.</div><div><br></div><div><br></div><div><div><br></div></div></div>