public void TestDeliveryOrderingWithSingleChannel()
        {
            var Ch = Conn.CreateModel();

            Ch.ExchangeDeclare(x, "fanout", durable: false);

            for (int i = 0; i < y; i++)
            {
                var ch = Conn.CreateModel();
                var q  = ch.QueueDeclare("", durable: false, exclusive: true, autoDelete: true, arguments: null);
                ch.QueueBind(queue: q, exchange: x, routingKey: "");
                channels.Add(ch);
                queues.Add(q);
                var cons = new CollectingConsumer(ch);
                consumers.Add(cons);
                ch.BasicConsume(queue: q, noAck: false, consumer: cons);
            }

            for (int i = 0; i < n; i++)
            {
                Ch.BasicPublish(exchange: x, routingKey: "",
                                basicProperties: new BasicProperties(),
                                body: encoding.GetBytes("msg"));
            }
            counter.Wait(TimeSpan.FromSeconds(30));

            foreach (var cons in consumers)
            {
                Assert.That(cons.DeliveryTags, Has.Count.EqualTo(n));
                var ary = cons.DeliveryTags.ToArray();
                Assert.AreEqual(ary[0], 1);
                Assert.AreEqual(ary[n - 1], n);
                for (int i = 0; i < (n - 1); i++)
                {
                    var a = ary[i];
                    var b = ary[i + 1];

                    Assert.IsTrue(a < b);
                }
            }
        }
コード例 #2
0
        public void TestDeliveryOrderingWithSingleChannel()
        {
            IModel Ch = _conn.CreateModel();

            Ch.ExchangeDeclare(_x, "fanout", durable: false);

            for (int i = 0; i < Y; i++)
            {
                IModel         ch = _conn.CreateModel();
                QueueDeclareOk q  = ch.QueueDeclare("", durable: false, exclusive: true, autoDelete: true, arguments: null);
                ch.QueueBind(queue: q, exchange: _x, routingKey: "");
                _channels.Add(ch);
                _queues.Add(q);
                var cons = new CollectingConsumer(ch);
                _consumers.Add(cons);
                ch.BasicConsume(queue: q, autoAck: false, consumer: cons);
            }

            for (int i = 0; i < N; i++)
            {
                Ch.BasicPublish(exchange: _x, routingKey: "",
                                basicProperties: new BasicProperties(),
                                body: _encoding.GetBytes("msg"));
            }
            counter.Wait(TimeSpan.FromSeconds(120));

            foreach (CollectingConsumer cons in _consumers)
            {
                Assert.That(cons.DeliveryTags, Has.Count.EqualTo(N));
                ulong[] ary = cons.DeliveryTags.ToArray();
                Assert.AreEqual(ary[0], 1);
                Assert.AreEqual(ary[N - 1], N);
                for (int i = 0; i < (N - 1); i++)
                {
                    ulong a = ary[i];
                    ulong b = ary[i + 1];

                    Assert.IsTrue(a < b);
                }
            }
        }
コード例 #3
0
        public void TestDeliveryOrderingWithSingleChannel()
        {
            var Ch = Conn.CreateModel();
            Ch.ExchangeDeclare(x, "fanout", durable: false);

            for (int i = 0; i < y; i++)
            {
                var ch = Conn.CreateModel();
                var q = ch.QueueDeclare("", durable: false, exclusive: true, autoDelete: true, arguments: null);
                ch.QueueBind(queue: q, exchange: x, routingKey: "");
                channels.Add(ch);
                queues.Add(q);
                var cons = new CollectingConsumer(ch);
                consumers.Add(cons);
                ch.BasicConsume(queue: q, autoAck: false, consumer: cons);
            }

            for (int i = 0; i < n; i++)
            {
                Ch.BasicPublish(exchange: x, routingKey: "",
                    basicProperties: new BasicProperties(),
                    body: encoding.GetBytes("msg"));
            }
            counter.Wait(TimeSpan.FromSeconds(30));

            foreach (var cons in consumers)
            {
                Assert.That(cons.DeliveryTags, Has.Count.EqualTo(n));
                var ary = cons.DeliveryTags.ToArray();
                Assert.AreEqual(ary[0], 1);
                Assert.AreEqual(ary[n - 1], n);
                for (int i = 0; i < (n - 1); i++)
                {
                    var a = ary[i];
                    var b = ary[i + 1];

                    Assert.IsTrue(a < b);
                }
            }
        }