Exemple #1
0
        public void SubscribeAck()
        {
            const int prefetchCount = 1;
            const bool noAck = false;
            const int numberOfMessagesToConsume = 1;

            WithChannel.Do(channel =>
            {
                channel.BasicQos(0, prefetchCount, false);

                var consumer = new LocalQueueingBasicConsumer(channel);
                channel.BasicConsume(ackNackQueue, noAck, consumer);

                var running = true;
                var thread = new Thread(_ =>
                {
                    var count = 0;
                    while (running && count++ < numberOfMessagesToConsume)
                    {
                        try
                        {
                            var basicDeliverEventArgs = (BasicDeliverEventArgs) consumer.Queue.Dequeue();

                            if (basicDeliverEventArgs != null)
                            {
                                var message = Encoding.UTF8.GetString(basicDeliverEventArgs.Body);
                                Console.Out.WriteLine("message = {0}", message);

                                Console.WriteLine("Redelivered: {0}", basicDeliverEventArgs.Redelivered);

                                consumer.Model.BasicAck(basicDeliverEventArgs.DeliveryTag, false);
                                // consumer.Model.BasicNack(basicDeliverEventArgs.DeliveryTag, false, requeue:true);
                            }
                        }
                        catch (EndOfStreamException)
                        {
                            break;
                        }
                    }

                });
                thread.Start();

                Thread.Sleep(1000);
                running = false;
                channel.Close();
                consumer.Queue.Close();
            });
        }
Exemple #2
0
        public void SubscribeAck()
        {
            const int  prefetchCount             = 1;
            const bool noAck                     = false;
            const int  numberOfMessagesToConsume = 1;

            WithChannel.Do(channel =>
            {
                channel.BasicQos(0, prefetchCount, false);

                var consumer = new LocalQueueingBasicConsumer(channel);
                channel.BasicConsume(ackNackQueue, noAck, consumer);

                var running = true;
                var thread  = new Thread(_ =>
                {
                    var count = 0;
                    while (running && count++ < numberOfMessagesToConsume)
                    {
                        try
                        {
                            var basicDeliverEventArgs = (BasicDeliverEventArgs)consumer.Queue.Dequeue();

                            if (basicDeliverEventArgs != null)
                            {
                                var message = Encoding.UTF8.GetString(basicDeliverEventArgs.Body);
                                Console.Out.WriteLine("message = {0}", message);

                                Console.WriteLine("Redelivered: {0}", basicDeliverEventArgs.Redelivered);

                                consumer.Model.BasicAck(basicDeliverEventArgs.DeliveryTag, false);
                                // consumer.Model.BasicNack(basicDeliverEventArgs.DeliveryTag, false, requeue:true);
                            }
                        }
                        catch (EndOfStreamException)
                        {
                            break;
                        }
                    }
                });
                thread.Start();

                Thread.Sleep(1000);
                running = false;
                channel.Close();
                consumer.Queue.Close();
            });
        }