<div dir="ltr">Hello,<div><br></div><div>I&#39;ve a C# client and I want to make sure that my published messages were received and saved to the disk. I&#39;ve create a small program that send a lot of messages to a exchange and confirm (for each message) if it was received.</div>
<div><br></div><div>I&#39;m using channel.ConfirmSelect and channel.WaitForConfirms, it works fine for the first 3300 messages, but after that the the WaitForConfirms is returning TIMEOUT. </div><div><br></div><div style>
I also tried to use channel.TxSelect / channel.TxCommit, but when there is no free diskspace on the server, the commit operation is waiting forever. </div><div style><br></div><div style>Do you know if what I&#39;m doing is right?  Below is the code of my application.</div>
<div style><br></div><div style>Thanks</div><div style><br></div><div style><div>            ConnectionFactory factory = new ConnectionFactory();</div><div>            factory.HostName = (&quot;serverName&quot;);</div><div>
            </div><div>            var d1 = DateTime.Now;</div><div><br></div><div>            bool commit = true;</div><div><br></div><div>            using (IConnection connection = factory.CreateConnection())</div><div>
            {</div><div>                using (IModel channel = connection.CreateModel())</div><div>                {     </div><div>                    var properties = channel.CreateBasicProperties();</div><div>                    properties.SetPersistent(true);</div>
<div>                    channel.ConfirmSelect();<br></div><div><br></div><div>                    int x = 0;</div><div>                    do</div><div>                    {</div><div>                        string routeKey;</div>
<div><br></div><div>                        var dt = DateTime.Now;</div><div><br></div><div>                        routeKey = String.Empty; </div><div><br></div><div>                        var message = x.ToString() + &quot;.&quot; + new string(&#39;a&#39;, 1024*100);</div>
<div>                        </div><div>                        //channel.TxSelect();, commented , using ConfirmSelect</div><div><br></div><div>                        var body = Encoding.ASCII.GetBytes(message.ToString());</div>
<div>                        channel.BasicPublish(EXCHANGE_NAME, routeKey, properties, body);</div><div><br></div><div>                        bool timedOut;</div><div>                        channel.WaitForConfirms(TimeSpan.FromSeconds(5), out timedOut);</div>
<div><br></div><div>                        if (timedOut)</div><div>                        {</div><div>                            // unable to post the message</div><div>                            throw new Exception(&quot;Unable to add more messages &quot; + x); ;</div>
<div>                        }</div><div><br></div><div>                        //if (commit) , commented , using WaitForConfirms</div><div>                        //    channel.TxCommit();</div><div>                        //else</div>
<div>                        //    channel.TxRollback();</div><div><br></div><div>                        if (x % 100 == 0) </div><div>                            Console.WriteLine(&quot;Message &#39;{0}&#39; is sent&quot;, x);</div>
<div>                        Thread.Sleep(5);</div><div><br></div><div>                    } while (++x &lt; TOTAL_TO_SEND);</div><div><br></div><div>                    Console.WriteLine(&quot;total time = &quot; + (DateTime.Now - d1));</div>
<div>                }</div><div>            }</div><div>        }</div></div><div><br></div></div>