From 6386711e058c2355917ed03b30a941c262c3f4a9 Mon Sep 17 00:00:00 2001 From: Laila Bougria Date: Tue, 8 Apr 2025 14:35:08 +0200 Subject: [PATCH 1/5] upgrade sqs --- src/Directory.Packages.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index d8ed8b67d5..c40b4507d6 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + From cb60bdf40055a10fec92d388818df58ce52b290a Mon Sep 17 00:00:00 2001 From: Laila Bougria Date: Tue, 8 Apr 2025 14:35:23 +0200 Subject: [PATCH 2/5] add reserved bytes to connection string --- .../SQSTransportConnectionString.cs | 8 ++++++++ .../SQSTransportCustomization.cs | 3 ++- src/ServiceControl.Transports.SQS/transport.manifest | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/ServiceControl.Transports.SQS/SQSTransportConnectionString.cs b/src/ServiceControl.Transports.SQS/SQSTransportConnectionString.cs index 8f587d28d5..179a775d1f 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("ReservedBytes", 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..bf32f7540b 100644 --- a/src/ServiceControl.Transports.SQS/SQSTransportCustomization.cs +++ b/src/ServiceControl.Transports.SQS/SQSTransportCustomization.cs @@ -72,7 +72,7 @@ protected override SqsTransport CreateTransport(TransportSettings transportSetti } #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); + var transport = new SqsTransport(sqsClient, snsClient, disableUnrestrictedDelayedDelivery: true); #pragma warning restore NSBSQSEXP0001 if (!string.IsNullOrEmpty(builder.QueueNamePrefix)) @@ -109,6 +109,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..a5d521abc2 100644 --- a/src/ServiceControl.Transports.SQS/transport.manifest +++ b/src/ServiceControl.Transports.SQS/transport.manifest @@ -7,7 +7,7 @@ "TypeName": "ServiceControl.Transports.SQS.SQSTransportCustomization, ServiceControl.Transports.SQS", "SampleConnectionString": "Region=;QueueNamePrefix=;TopicNamePrefix=;AccessKeyId=;SecretAccessKey=;S3BucketForLargeMessages=;S3KeyPrefix=", "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 reserve bytes in the message size, use 'ReservedBytes'.", "Aliases": [ "NServiceBus.SqsTransport, NServiceBus.AmazonSQS", "ServiceControl.Transports.AmazonSQS.ServiceControlSqsTransport, ServiceControl.Transports.AmazonSQS" From e109439933d5a51b2292b4d7a4b93ad5857167ad Mon Sep 17 00:00:00 2001 From: Laila Bougria Date: Wed, 9 Apr 2025 11:44:39 +0200 Subject: [PATCH 3/5] example connectionstring --- src/ServiceControl.Transports.SQS/transport.manifest | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ServiceControl.Transports.SQS/transport.manifest b/src/ServiceControl.Transports.SQS/transport.manifest index a5d521abc2..fb6a2bf490 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=;ReservedBytes=", "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. To reserve bytes in the message size, use 'ReservedBytes'.", + "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 'ReservedBytes'.", "Aliases": [ "NServiceBus.SqsTransport, NServiceBus.AmazonSQS", "ServiceControl.Transports.AmazonSQS.ServiceControlSqsTransport, ServiceControl.Transports.AmazonSQS" ] } ] -} +} \ No newline at end of file From 2aa95e86c8f93cba6aa767b6af75dfa0dd7916e4 Mon Sep 17 00:00:00 2001 From: Laila Bougria Date: Wed, 9 Apr 2025 16:11:24 +0200 Subject: [PATCH 4/5] remove pragma --- src/ServiceControl.Transports.SQS/SQSTransportCustomization.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/ServiceControl.Transports.SQS/SQSTransportCustomization.cs b/src/ServiceControl.Transports.SQS/SQSTransportCustomization.cs index bf32f7540b..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, disableUnrestrictedDelayedDelivery: true); -#pragma warning restore NSBSQSEXP0001 if (!string.IsNullOrEmpty(builder.QueueNamePrefix)) { From 6421811372ae5c49db632c65654b5e76753781ef Mon Sep 17 00:00:00 2001 From: Daniel Marbach Date: Mon, 14 Apr 2025 09:26:54 +0200 Subject: [PATCH 5/5] Transport and review updates --- src/Directory.Packages.props | 2 +- .../SQSTransportConnectionString.cs | 2 +- src/ServiceControl.Transports.SQS/transport.manifest | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index c40b4507d6..9a2407ecde 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -30,7 +30,7 @@ - + diff --git a/src/ServiceControl.Transports.SQS/SQSTransportConnectionString.cs b/src/ServiceControl.Transports.SQS/SQSTransportConnectionString.cs index 179a775d1f..c1a3e2a678 100644 --- a/src/ServiceControl.Transports.SQS/SQSTransportConnectionString.cs +++ b/src/ServiceControl.Transports.SQS/SQSTransportConnectionString.cs @@ -53,7 +53,7 @@ public SQSTransportConnectionString(string connectionString) } - if (builder.TryGetValue("ReservedBytes", out object reservedBytes)) + if (builder.TryGetValue("ReservedBytesInMessageSize", out object reservedBytes)) { ReservedBytesInMessageSize = Convert.ToInt32(reservedBytes); } diff --git a/src/ServiceControl.Transports.SQS/transport.manifest b/src/ServiceControl.Transports.SQS/transport.manifest index fb6a2bf490..7a4438a154 100644 --- a/src/ServiceControl.Transports.SQS/transport.manifest +++ b/src/ServiceControl.Transports.SQS/transport.manifest @@ -5,9 +5,9 @@ "DisplayName": "AmazonSQS", "AssemblyName": "ServiceControl.Transports.SQS", "TypeName": "ServiceControl.Transports.SQS.SQSTransportCustomization, ServiceControl.Transports.SQS", - "SampleConnectionString": "Region=;QueueNamePrefix=;TopicNamePrefix=;AccessKeyId=;SecretAccessKey=;S3BucketForLargeMessages=;S3KeyPrefix=;DoNotWrapOutgoingMessages=;ReservedBytes=", + "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. To avoid wrapping outgoing messages, set 'DoNotWrapOutgoingMessages' to 'true'. To reserve bytes in the message size, use 'ReservedBytes'.", + "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"