NDomain.Bus.Transport.InboundTransportOptions.GetDeadLetterEndpoint C# (CSharp) Method

GetDeadLetterEndpoint() public method

public GetDeadLetterEndpoint ( ) : string
return string
        public string GetDeadLetterEndpoint()
        {
            return string.Format(DeadLetterEndpointFormat, Endpoint);
        }
    }

Usage Example

Ejemplo n.º 1
0
        public async Task ShouldDeadLetterAndDelete_When_MaxRetriesExceeded(int maxRetries, bool deadLetterMessages)
        {
            // arrange
            var options = new InboundTransportOptions("queue", maxRetries, deadLetterMessages);
            var deadLetterOptions = new InboundTransportOptions(options.GetDeadLetterEndpoint(), 1, false);

            var sender = this.factory.CreateOutboundTransport();
            var receiver = this.factory.CreateInboundTransport(options);
            var deadletterReceiver = this.factory.CreateInboundTransport(deadLetterOptions);

            await sender.Send(CreateMessageFor(options.Endpoint));

            IMessageTransaction msg;
            for (var i = 0; i < maxRetries - 1; ++i)
            {
                msg = await receiver.Receive(TimeSpan.FromMilliseconds(1));
                await msg.Fail();
            }

            // ensure dead letter is still empty
            var deadLetterMsg = await deadletterReceiver.Receive(TimeSpan.FromMilliseconds(1));
            Assume.That(deadLetterMsg, Is.Null);

            // act

            // last attempt
            msg = await receiver.Receive(TimeSpan.FromMilliseconds(1));
            await msg.Fail();

            // assert

            msg = await receiver.Receive(TimeSpan.FromMilliseconds(1));
            Assert.That(msg, Is.Null);

            deadLetterMsg = await deadletterReceiver.Receive(TimeSpan.FromMilliseconds(1));
            if (deadLetterMessages)
            {
                Assert.That(deadLetterMsg, Is.Not.Null);
                Assert.That(deadLetterMsg.Message.Headers[MessageHeaders.OriginalEndpoint], Is.EqualTo(options.Endpoint));
            }
            else
            {
                Assert.That(deadLetterMsg, Is.Null);
            }
        }