Ejemplo n.º 1
0
        public void A_message_that_fails_processing_should_go_back_to_queue_on_transactional_queue()
        {
            TransactionalTransport.MessageArrived += ThrowOnFirstAction();

            TransactionalTransport.Send(TransactionalTestQueueUri, new object[] { DateTime.Today });

            gotFirstMessage.WaitOne(TimeSpan.FromSeconds(30), false);

            Assert.NotNull(transactionalQueue.Peek());

            gotSecondMessage.Set();
        }
Ejemplo n.º 2
0
        public void When_a_message_fails_enough_times_it_is_moved_to_error_queue_using_transactional_queue()
        {
            int count = 0;

            TransactionalTransport.MessageArrived += o =>
            {
                Interlocked.Increment(ref count);
                throw new InvalidOperationException();
            };

            TransactionalTransport.Send(TransactionalTestQueueUri, new object[] { DateTime.Today });

            using (var errorQueue = new MessageQueue(transactionalTestQueuePath + ";errors"))
            {
                Assert.NotNull(errorQueue.Peek());
                Assert.Equal(5, count);
            }
        }