Beispiel #1
0
        public void When_retry_limits_force_a_message_onto_the_dlq()
        {
            //NOTE: This test is **slow** because it needs to ensure infrastructure and then wait whilst we requeue a message a number of times,
            //then propagate to the DLQ

            //start a message pump, let it create infrastructure
            var task = Task.Factory.StartNew(() => _messagePump.Run(), TaskCreationOptions.LongRunning);

            Task.Delay(20000).Wait();

            //put something on an SNS topic, which will be delivered to our SQS queue
            _sender.Send(_message);

            //Let the message be handled and deferred until it reaches the DLQ
            Task.Delay(20000).Wait();

            //send a quit message to the pump to terminate it
            var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody(""));

            _channel.Enqueue(quitMessage);

            //wait for the pump to stop once it gets a quit message
            Task.WaitAll(new[] { task });

            Task.Delay(5000).Wait();

            //inspect the dlq
            var dlqMessage = _deadLetterConsumer.Receive(10000).First();

            //assert this is our message
            dlqMessage.Body.Value.Should().Be(_message.Body.Value);

            _deadLetterConsumer.Acknowledge(dlqMessage);
        }
        public async Task When_confirming_posting_a_message_via_the_messaging_gateway()
        {
            _messageProducer.Send(_message);

            await Task.Delay(500);

            //if this is true, then possible test failed because of timeout or RMQ issues
            _messageWasNotPublished.Should().BeFalse();
            //did we see the message - intent to test logic here
            _messageWasPublished.Should().BeTrue();
        }
Beispiel #3
0
 public void When_posting_a_message_but_no_broker_created()
 {
     Assert.Throws <ChannelFailureException>(() => _messageProducer.Send(_message));
 }