Ejemplo n.º 1
0
        public async Task The_messages_should_forward_to_error_queue_by_default()
        {
            var receivedMessages = await GenerateAndReceiveSQSEvent <AlwaysFailsMessage>(3);

            var context = new TestContext();

            var endpoint = new AwsLambdaSQSEndpoint(ctx =>
            {
                var configuration = new AwsLambdaSQSEndpointConfiguration(QueueName);
                var transport     = configuration.Transport;
                transport.ClientFactory(CreateSQSClient);

                var advanced = configuration.AdvancedConfiguration;
                advanced.SendFailedMessagesTo(ErrorQueueName);
                advanced.RegisterComponents(c => c.RegisterSingleton(typeof(TestContext), context));
                return(configuration);
            });

            await endpoint.Process(receivedMessages, null);

            var messagesInErrorQueueCount = await CountMessagesInErrorQueue();

            Assert.AreEqual(receivedMessages.Records.Count, messagesInErrorQueueCount, "Error queue count mismatch");

            Assert.AreEqual(messagesInErrorQueueCount * 6, context.HandlerInvokationCount, "Immediate/Delayed Retry count mismatch");
        }
Ejemplo n.º 2
0
        public async Task The_handlers_should_be_invoked_and_process_successfully()
        {
            var receivedMessages = await GenerateAndReceiveSQSEvent <SuccessMessage>(3);

            var context = new TestContext();

            var endpoint = new AwsLambdaSQSEndpoint(ctx =>
            {
                var configuration = new AwsLambdaSQSEndpointConfiguration(QueueName);
                var transport     = configuration.Transport;
                transport.ClientFactory(CreateSQSClient);

                var advanced = configuration.AdvancedConfiguration;
                advanced.SendFailedMessagesTo(ErrorQueueName);
                advanced.RegisterComponents(c => c.RegisterSingleton(typeof(TestContext), context));
                return(configuration);
            });

            await endpoint.Process(receivedMessages, null);

            Assert.AreEqual(receivedMessages.Records.Count, context.HandlerInvokationCount);

            var messagesInErrorQueueCount = await CountMessagesInErrorQueue();

            Assert.AreEqual(0, messagesInErrorQueueCount);
        }
Ejemplo n.º 3
0
    static void ConfigureSerializer(AwsLambdaSQSEndpointConfiguration endpointConfiguration)
    {
        #region aws-custom-serializer

        endpointConfiguration.UseSerialization <NewtonsoftSerializer>();

        #endregion
    }
Ejemplo n.º 4
0
    static void ConfigureDontMoveToErrors(AwsLambdaSQSEndpointConfiguration endpointConfiguration)
    {
        #region aws-configure-dont-move-to-error

        endpointConfiguration.DoNotSendMessagesToErrorQueue();

        #endregion
    }
Ejemplo n.º 5
0
    static void ConfigureErrorQueue(AwsLambdaSQSEndpointConfiguration endpointConfiguration)
    {
        #region aws-configure-error-queue

        var advanced = endpointConfiguration.AdvancedConfiguration;

        advanced.SendFailedMessagesTo("<error-queue>");

        #endregion
    }
Ejemplo n.º 6
0
    static void RoutingConfiguration(AwsLambdaSQSEndpointConfiguration endpointConfiguration)
    {
        #region aws-configure-routing

        var transport = endpointConfiguration.Transport;
        var routing   = transport.Routing();
        routing.RouteToEndpoint(typeof(ACommand), "<destination>");

        #endregion
    }
Ejemplo n.º 7
0
    static void LicenseFile(AwsLambdaSQSEndpointConfiguration endpointConfiguration, ILambdaContext context)
    {
        #region load-license-file

        var licenseText = Environment.GetEnvironmentVariable("NServiceBusLicenseText");

        var advanced = endpointConfiguration.AdvancedConfiguration;

        advanced.License(licenseText);

        #endregion
    }
Ejemplo n.º 8
0
    static void CustomDiagnostics(AwsLambdaSQSEndpointConfiguration endpointConfiguration, ILambdaContext context)
    {
        #region aws-custom-diagnostics

        var advanced = endpointConfiguration.AdvancedConfiguration;

        advanced.CustomDiagnosticsWriter(diagnostics =>
        {
            context.Logger.LogLine(diagnostics);
            return(Task.CompletedTask);
        });

        #endregion
    }
Ejemplo n.º 9
0
        public async Task The_message_should_be_received()
        {
            var receivedMessages = await GenerateAndReceiveSQSEvent <MessageThatTriggersASentMessage>(1);

            var context = new TestContext();

            var destinationEndpointName = $"{QueueNamePrefix}DestinationEndpoint";

            RegisterQueueNameToCleanup(destinationEndpointName);

            var destinationConfiguration = new EndpointConfiguration(destinationEndpointName);

            destinationConfiguration.UsePersistence <InMemoryPersistence>();
            var destinationTransport = destinationConfiguration.UseTransport <SqsTransport>();

            destinationTransport.ClientFactory(CreateSQSClient);
            destinationConfiguration.SendFailedMessagesTo(ErrorQueueName);
            destinationConfiguration.EnableInstallers();
            destinationConfiguration.RegisterComponents(c => c.RegisterSingleton(typeof(TestContext), context));
            var destinationEndpoint = await Endpoint.Start(destinationConfiguration);

            var endpoint = new AwsLambdaSQSEndpoint(ctx =>
            {
                var configuration = new AwsLambdaSQSEndpointConfiguration(QueueName);
                var transport     = configuration.Transport;
                transport.ClientFactory(CreateSQSClient);

                var routing = transport.Routing();
                routing.RouteToEndpoint(typeof(SentMessage), destinationEndpointName);

                var advanced = configuration.AdvancedConfiguration;
                advanced.SendFailedMessagesTo(ErrorQueueName);
                advanced.RegisterComponents(c => c.RegisterSingleton(typeof(TestContext), context));
                return(configuration);
            });

            await endpoint.Process(receivedMessages, null);

            await context.MessageReceived.Task;

            await destinationEndpoint.Stop();

            var messagesInErrorQueueCount = await CountMessagesInErrorQueue();

            Assert.AreEqual(0, messagesInErrorQueueCount, "Error queue count mismatch");
        }
Ejemplo n.º 10
0
    static void Recoverability(AwsLambdaSQSEndpointConfiguration endpointConfiguration)
    {
        #region aws-delayed-retries

        var recoverability = endpointConfiguration.AdvancedConfiguration.Recoverability();
        recoverability.Delayed(customization =>
        {
            customization.NumberOfRetries(5);
            customization.TimeIncrease(TimeSpan.FromSeconds(15));
        });

        #endregion

        #region aws-unrestricted-delayed-delivery

        endpointConfiguration.Transport.UnrestrictedDurationDelayedDelivery();

        #endregion
    }