diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index d8ed8b67d5..9a2407ecde 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/src/ServiceControl.Transports.SQS/SQSTransportConnectionString.cs b/src/ServiceControl.Transports.SQS/SQSTransportConnectionString.cs index 8f587d28d5..c1a3e2a678 100644 --- a/src/ServiceControl.Transports.SQS/SQSTransportConnectionString.cs +++ b/src/ServiceControl.Transports.SQS/SQSTransportConnectionString.cs @@ -1,5 +1,6 @@ namespace ServiceControl.Transports.SQS; +using System; using System.Data.Common; public class SQSTransportConnectionString @@ -50,6 +51,12 @@ public SQSTransportConnectionString(string connectionString) { DoNotWrapOutgoingMessages = doNotWrapOutgoingMessagesAsBool; } + + + if (builder.TryGetValue("ReservedBytesInMessageSize", out object reservedBytes)) + { + ReservedBytesInMessageSize = Convert.ToInt32(reservedBytes); + } } public string AccessKey { get; } @@ -60,4 +67,5 @@ public SQSTransportConnectionString(string connectionString) public string S3BucketForLargeMessages { get; } public string S3KeyPrefix { get; } public bool DoNotWrapOutgoingMessages { get; } + public int ReservedBytesInMessageSize { get; } } \ No newline at end of file diff --git a/src/ServiceControl.Transports.SQS/SQSTransportCustomization.cs b/src/ServiceControl.Transports.SQS/SQSTransportCustomization.cs index 7d07fb54a1..be9f9df6c1 100644 --- a/src/ServiceControl.Transports.SQS/SQSTransportCustomization.cs +++ b/src/ServiceControl.Transports.SQS/SQSTransportCustomization.cs @@ -71,9 +71,7 @@ protected override SqsTransport CreateTransport(TransportSettings transportSetti snsClient = new AmazonSimpleNotificationServiceClient(); } -#pragma warning disable NSBSQSEXP0001 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. - var transport = new SqsTransport(sqsClient, snsClient, enableDelayedDelivery: false); -#pragma warning restore NSBSQSEXP0001 + var transport = new SqsTransport(sqsClient, snsClient, disableUnrestrictedDelayedDelivery: true); if (!string.IsNullOrEmpty(builder.QueueNamePrefix)) { @@ -109,6 +107,7 @@ protected override SqsTransport CreateTransport(TransportSettings transportSetti } transport.DoNotWrapOutgoingMessages = builder.DoNotWrapOutgoingMessages; + transport.ReserveBytesInMessageSizeCalculation = builder.ReservedBytesInMessageSize; transport.TransportTransactionMode = transport.GetSupportedTransactionModes().Contains(preferredTransactionMode) ? preferredTransactionMode : TransportTransactionMode.ReceiveOnly; diff --git a/src/ServiceControl.Transports.SQS/transport.manifest b/src/ServiceControl.Transports.SQS/transport.manifest index 29cceaf87e..7a4438a154 100644 --- a/src/ServiceControl.Transports.SQS/transport.manifest +++ b/src/ServiceControl.Transports.SQS/transport.manifest @@ -5,13 +5,13 @@ "DisplayName": "AmazonSQS", "AssemblyName": "ServiceControl.Transports.SQS", "TypeName": "ServiceControl.Transports.SQS.SQSTransportCustomization, ServiceControl.Transports.SQS", - "SampleConnectionString": "Region=;QueueNamePrefix=;TopicNamePrefix=;AccessKeyId=;SecretAccessKey=;S3BucketForLargeMessages=;S3KeyPrefix=", + "SampleConnectionString": "Region=;QueueNamePrefix=;TopicNamePrefix=;AccessKeyId=;SecretAccessKey=;S3BucketForLargeMessages=;S3KeyPrefix=;DoNotWrapOutgoingMessages=;ReservedBytesInMessageSize=", "AvailableInSCMU": true, - "Help": "'Region' is mandatory. Specify 'AccessKeyId' and 'SecretAccessKey' values to set the AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY environment variables if not using IAM roles or EC2 metadata. Specify 'S3BucketForLargeMessages' and optionally 'S3KeyPrefix' if large message bodies are used.", + "Help": "'Region' is mandatory. Specify 'AccessKeyId' and 'SecretAccessKey' values to set the AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY environment variables if not using IAM roles or EC2 metadata. Specify 'S3BucketForLargeMessages' and optionally 'S3KeyPrefix' if large message bodies are used. To avoid wrapping outgoing messages, set 'DoNotWrapOutgoingMessages' to 'true'. To reserve bytes in the message size, use 'ReservedBytesInMessageSize'.", "Aliases": [ "NServiceBus.SqsTransport, NServiceBus.AmazonSQS", "ServiceControl.Transports.AmazonSQS.ServiceControlSqsTransport, ServiceControl.Transports.AmazonSQS" ] } ] -} +} \ No newline at end of file