Beispiel #1
0
        public void ShouldReceiveSeveralMessages()
        {
            //Arrange
            var queueFactory = new TestQueueFactory
            {
                AutoDelete = false
            };
            var q = queueFactory.CreateWithRandomId();

            MqMessageRead <string> msg1;
            MqMessageRead <string> msg2;

            try
            {
                q.Publish("foo");
                q.Publish("bar");

                //Act
                msg1 = q.Listen <string>();
                _output.WriteLine("Msg1: " + msg1.Message.Payload);
                msg1.Ack();

                msg2 = q.Listen <string>();
                _output.WriteLine("Msg2: " + msg2.Message.Payload);
                msg2.Ack();
            }
            finally
            {
                q.Dispose();
            }

            ////Assert
            Assert.Equal("foo", msg1.Message.Payload);
            Assert.Equal("bar", msg2.Message.Payload);
        }
Beispiel #2
0
        public void ShouldNotDeliveryWhenDeadLetterRoutingIsWrong()
        {
            //Arrange
            var deadLetterExchange = TestExchangeFactory.Direct.CreateWithRandomId();
            var deadLetterQueue    = TestQueueFactory.Default.CreateWithRandomId();

            deadLetterQueue.BindToExchange(deadLetterExchange, "bar");

            var queueFactory = new TestQueueFactory
            {
                DeadLetterExchange   = deadLetterExchange.Name,
                DeadLetterRoutingKey = "wrong"
            };
            var queue = queueFactory.CreateWithRandomId();

            //Act
            queue.Publish("foo");

            var msg = queue.Listen <string>();

            msg.Nack();

            MqMessage <string> deadMsg          = null;
            TimeoutException   timeoutException = null;

            try
            {
                deadMsg = deadLetterQueue.ListenAutoAck <string>();
            }
            catch (TimeoutException e)
            {
                timeoutException = e;
            }

            if (timeoutException == null)
            {
                _output.WriteLine("Dead message: " + (deadMsg?.Payload ?? "[null]"));
            }

            //Assert
            Assert.NotNull(timeoutException);
        }
Beispiel #3
0
        public void ShouldDefineDeadLetterWithRouting()
        {
            //Arrange
            var deadLetterExchange = TestExchangeFactory.Fanout.CreateWithRandomId();
            var deadLetterQueue    = TestQueueFactory.Default.CreateWithRandomId();

            deadLetterQueue.BindToExchange(deadLetterExchange, "bar");

            var queueFactory = new TestQueueFactory
            {
                DeadLetterExchange   = deadLetterExchange.Name,
                DeadLetterRoutingKey = "bar",
                AutoDelete           = false
            };
            var queue = queueFactory.CreateWithRandomId();
            MqMessageRead <string> deadMsg;

            try
            {
                //Act
                queue.Publish("foo");

                var msg = queue.Listen <string>();
                msg.Nack();

                deadMsg = deadLetterQueue.Listen <string>();
                deadMsg.Ack();
            }
            finally
            {
                queue.Dispose();
            }

            //Assert
            Assert.NotNull(deadMsg);
            Assert.Equal("foo", deadMsg.Message.Payload);
        }