diff --git a/src/JustSaying/AwsTools/MessageHandling/SnsMessagePublisher.cs b/src/JustSaying/AwsTools/MessageHandling/SnsMessagePublisher.cs index e6fe736af..a2c8285b4 100644 --- a/src/JustSaying/AwsTools/MessageHandling/SnsMessagePublisher.cs +++ b/src/JustSaying/AwsTools/MessageHandling/SnsMessagePublisher.cs @@ -15,9 +15,9 @@ public class SnsMessagePublisher : IMessagePublisher, IMessageBatchPublisher, II private readonly IMessageSerializationRegister _serializationRegister; private readonly IMessageSubjectProvider _messageSubjectProvider; private readonly Func _handleException; - private readonly Func, bool> _handleBatchException; private readonly ILogger _logger; + public Func, bool> HandleBatchException { get; set; } public Action MessageResponseLogger { get; set; } public Action> MessageBatchResponseLogger { get; set; } public string Arn { get; internal set; } @@ -40,25 +40,12 @@ public class SnsMessagePublisher : IMessagePublisher, IMessageBatchPublisher, II ILoggerFactory loggerFactory, IMessageSubjectProvider messageSubjectProvider, Func handleException = null) - : this(topicArn, client, serializationRegister, loggerFactory, messageSubjectProvider, handleException, null) - { - } - - public SnsMessagePublisher( - string topicArn, - IAmazonSimpleNotificationService client, - IMessageSerializationRegister serializationRegister, - ILoggerFactory loggerFactory, - IMessageSubjectProvider messageSubjectProvider, - Func handleException, - Func, bool> handleBatchException) { Arn = topicArn; Client = client; _serializationRegister = serializationRegister; _logger = loggerFactory.CreateLogger("JustSaying.Publish"); _handleException = handleException; - _handleBatchException = handleBatchException; _messageSubjectProvider = messageSubjectProvider; } @@ -85,10 +72,7 @@ public async Task PublishAsync(Message message, PublishMetadata metadata, Cancel } } - using (_logger.BeginScope(new Dictionary - { - ["AwsRequestId"] = response?.MessageId - })) + using (_logger.BeginScope(new Dictionary { ["AwsRequestId"] = response?.MessageId })) { _logger.LogInformation( "Published message {MessageId} of type {MessageType} to {DestinationType} '{MessageDestination}'.", @@ -157,11 +141,13 @@ private static MessageAttributeValue BuildMessageAttributeValue(Messaging.Messag }; } + /// public virtual InterrogationResult Interrogate() { return new InterrogationResult(new { Arn }); } + /// public async Task PublishAsync(IEnumerable messages, PublishBatchMetadata metadata, CancellationToken cancellationToken) { int size = metadata?.BatchSize ?? JustSayingConstants.MaximumSnsBatchSize; @@ -245,7 +231,8 @@ public async Task PublishAsync(IEnumerable messages, PublishBatchMetada } } - private bool ClientExceptionHandler(Exception ex, IReadOnlyCollection messages) => _handleBatchException?.Invoke(ex, messages) ?? false; + private bool ClientExceptionHandler(Exception ex, IReadOnlyCollection messages) + => HandleBatchException?.Invoke(ex, messages) ?? false; private PublishBatchRequest BuildPublishBatchRequest(Message[] messages, PublishMetadata metadata) { diff --git a/src/JustSaying/Fluent/TopicAddressPublicationBuilder`1.cs b/src/JustSaying/Fluent/TopicAddressPublicationBuilder`1.cs index 39ce20b24..4c7f0ca94 100644 --- a/src/JustSaying/Fluent/TopicAddressPublicationBuilder`1.cs +++ b/src/JustSaying/Fluent/TopicAddressPublicationBuilder`1.cs @@ -78,8 +78,10 @@ public void Configure(JustSayingBus bus, IAwsClientFactoryProxy proxy, ILoggerFa bus.SerializationRegister, loggerFactory, config.MessageSubjectProvider, - _exceptionHandler, - _exceptionBatchHandler); + _exceptionHandler) + { + HandleBatchException = _exceptionBatchHandler, + }; bus.AddMessagePublisher(eventPublisher); diff --git a/src/JustSaying/Messaging/IMessageBatchPublisher.cs b/src/JustSaying/Messaging/IMessageBatchPublisher.cs index 2324e61ea..3283c5d56 100644 --- a/src/JustSaying/Messaging/IMessageBatchPublisher.cs +++ b/src/JustSaying/Messaging/IMessageBatchPublisher.cs @@ -13,10 +13,10 @@ public interface IMessageBatchPublisher : IInterrogable, IStartable /// /// The publisher to use. /// The message(s) to publish. - /// The message batch metadata. + /// The optional message batch metadata. /// The optional cancellation token to use. /// /// A representing the asynchronous operation to publish the messages. /// - Task PublishAsync(IEnumerable messages, PublishBatchMetadata metadata, CancellationToken cancellationToken = default); + Task PublishAsync(IEnumerable messages, PublishBatchMetadata metadata = default, CancellationToken cancellationToken = default); } diff --git a/src/JustSaying/Messaging/MessagePublisherExtensions.cs b/src/JustSaying/Messaging/MessagePublisherExtensions.cs index d2dded25f..c91e8fd11 100644 --- a/src/JustSaying/Messaging/MessagePublisherExtensions.cs +++ b/src/JustSaying/Messaging/MessagePublisherExtensions.cs @@ -45,7 +45,7 @@ await publisher.PublishAsync(message, null, cancellationToken) /// A representing the asynchronous operation to publish the messages. /// /// Thrown when is ." - public static Task PublishAsync(this IMessageBatchPublisher publisher, IEnumerable messages, CancellationToken cancellationToken = default) + public static Task PublishAsync(this IMessageBatchPublisher publisher, IEnumerable messages, CancellationToken cancellationToken) { if (publisher == null) { diff --git a/tests/JustSaying.IntegrationTests/Fluent/DependencyInjection/Microsoft/WhenRegisteringASingleHandlerViaContainer.cs b/tests/JustSaying.IntegrationTests/Fluent/DependencyInjection/Microsoft/WhenRegisteringASingleHandlerViaContainer.cs index 1adf4878c..3da9843a5 100644 --- a/tests/JustSaying.IntegrationTests/Fluent/DependencyInjection/Microsoft/WhenRegisteringASingleHandlerViaContainer.cs +++ b/tests/JustSaying.IntegrationTests/Fluent/DependencyInjection/Microsoft/WhenRegisteringASingleHandlerViaContainer.cs @@ -59,7 +59,7 @@ public async Task Then_The_Handler_Is_Resolved_ForMultiMessage() future.ExpectedMessageCount = 10; var messages = new List(); - for (var i = 0; i < future.ExpectedMessageCount; i++) + for (int i = 0; i < future.ExpectedMessageCount; i++) { messages.Add(new OrderPlaced(Guid.NewGuid().ToString())); } diff --git a/tests/JustSaying.UnitTests/AwsTools/MessageHandling/Sns/TopicByName/WhenPublishingInBatchAsyncExceptionCanBeHandled.cs b/tests/JustSaying.UnitTests/AwsTools/MessageHandling/Sns/TopicByName/WhenPublishingInBatchAsyncExceptionCanBeHandled.cs index 24fe793d2..7c64cdae2 100644 --- a/tests/JustSaying.UnitTests/AwsTools/MessageHandling/Sns/TopicByName/WhenPublishingInBatchAsyncExceptionCanBeHandled.cs +++ b/tests/JustSaying.UnitTests/AwsTools/MessageHandling/Sns/TopicByName/WhenPublishingInBatchAsyncExceptionCanBeHandled.cs @@ -24,9 +24,10 @@ private protected override Task CreateSystemUnderTestAsync( Sns, _serializationRegister, NullLoggerFactory.Instance, - Substitute.For(), - null, - (_, _) => true); + Substitute.For()) + { + HandleBatchException = (_, _) => true, + }; return Task.FromResult(topic); } diff --git a/tests/JustSaying.UnitTests/AwsTools/MessageHandling/Sns/TopicByName/WhenPublishingInBatchAsyncExceptionCanBeThrown.cs b/tests/JustSaying.UnitTests/AwsTools/MessageHandling/Sns/TopicByName/WhenPublishingInBatchAsyncExceptionCanBeThrown.cs index be1108d65..ff72e734d 100644 --- a/tests/JustSaying.UnitTests/AwsTools/MessageHandling/Sns/TopicByName/WhenPublishingInBatchAsyncExceptionCanBeThrown.cs +++ b/tests/JustSaying.UnitTests/AwsTools/MessageHandling/Sns/TopicByName/WhenPublishingInBatchAsyncExceptionCanBeThrown.cs @@ -25,9 +25,10 @@ private protected override Task CreateSystemUnderTestAsync( Sns, _serializationRegister, NullLoggerFactory.Instance, - Substitute.For(), - null, - (_, _) => false); + Substitute.For()) + { + HandleBatchException = (_, _) => false, + }; return Task.FromResult(topic); }