public void throws_when_message_is_large_and_no_s3_bucket_configured()
        {
            var settings          = new SettingsHolder();
            var transportSettings = new TransportExtensions <SqsTransport>(settings);

            transportSettings
            .Region("ap-southeast-2");

            var sut = new SqsMessageDispatcher
            {
                ConnectionConfiguration = new SqsConnectionConfiguration(settings)
            };

            var stringBuilder = new StringBuilder();

            while (stringBuilder.Length < 256 * 1024)
            {
                stringBuilder.Append("This is a large string. ");
            }

            var largeOutgoingMessageToSend = new OutgoingMessage("1234",
                                                                 new Dictionary <string, string>(),
                                                                 Encoding.Default.GetBytes(stringBuilder.ToString()));

            var transportOperations = new TransportOperations(
                new TransportOperation(
                    largeOutgoingMessageToSend,
                    new UnicastAddressTag("address")));

            var transportTransaction = new TransportTransaction();
            var context = new ContextBag();

            Assert.ThrowsAsync <InvalidOperationException>(async() => await sut.Dispatch(transportOperations, transportTransaction, context));
        }
        public static TransportExtensions <SqsTransport> ConfigureSqsTransport(this TransportExtensions <SqsTransport> transportConfiguration, string queueNamePrefix)
        {
            var region = EnvironmentHelper.GetEnvironmentVariable(RegionEnvironmentVariableName) ?? "ap-southeast-2";

            transportConfiguration
            .Region(region)
            .QueueNamePrefix(queueNamePrefix)
            .PreTruncateQueueNamesForAcceptanceTests();

            var s3BucketName = EnvironmentHelper.GetEnvironmentVariable(S3BucketEnvironmentVariableName);

            if (!string.IsNullOrEmpty(s3BucketName))
            {
                transportConfiguration.S3BucketForLargeMessages(s3BucketName, "test");
            }

            var nativeDeferralRaw = EnvironmentHelper.GetEnvironmentVariable(NativeDeferralEnvironmentVariableName);
            var validValue        = bool.TryParse(nativeDeferralRaw, out var nativeDeferral);

            if (validValue && nativeDeferral)
            {
                transportConfiguration.NativeDeferral();
            }

            return(transportConfiguration);
        }
Пример #3
0
    public TransportConfigurationResult Configure(SettingsHolder settings, TransportTransactionMode transactionMode)
    {
        var sqsTransport = new SqsTransport();
        var sqsConfig    = new TransportExtensions <SqsTransport>(settings);

        sqsConfig.Region("ap-southeast-2")
        .QueueNamePrefix("TransportTest-")
        .S3BucketForLargeMessages("sqstransportmessages1337", "test")
        .NativeDeferral();

        return(new TransportConfigurationResult
        {
            TransportInfrastructure = sqsTransport.Initialize(settings, ""),
            PurgeInputQueueOnStartup = true
        });
    }