public async Task Then_Both_Handlers_Receive_The_Message() { // Arrange var handler1 = new ExactlyOnceHandlerWithTimeout(); var handler2 = new ExactlyOnceHandlerNoTimeout(); var services = GivenJustSaying() .ConfigureJustSaying((builder) => builder.WithLoopbackTopic <SimpleMessage>(UniqueName)) .AddJustSayingHandlers(new[] { handler1, handler2 }); await WhenAsync( services, async (publisher, listener, serviceProvider, cancellationToken) => { listener.Start(cancellationToken); // Act await publisher.PublishAsync(new SimpleMessage(), cancellationToken); await Task.Delay(5.Seconds()); // Assert handler1.NumberOfTimesIHaveBeenCalled().ShouldBe(1); handler2.NumberOfTimesIHaveBeenCalled().ShouldBe(1); }); }
public async Task Sqs_Policy_Is_Applied_With_Wildcard() { // Arrange var handler = new ExactlyOnceHandlerWithTimeout(); var services = GivenJustSaying() .ConfigureJustSaying((builder) => builder.WithLoopbackTopic <TopicA>(UniqueName)) .ConfigureJustSaying((builder) => builder.WithLoopbackTopic <TopicB>(UniqueName)) .AddJustSayingHandler <TopicA, HandlerA>() .AddJustSayingHandler <TopicB, HandlerB>(); await WhenAsync( services, async (publisher, listener, serviceProvider, cancellationToken) => { listener.Start(cancellationToken); var clientFactory = serviceProvider.GetRequiredService <MessagingBusBuilder>().BuildClientFactory(); var loggerFactory = serviceProvider.GetRequiredService <ILoggerFactory>(); var client = clientFactory.GetSqsClient(Region); var queue = new SqsQueueByName(Region, UniqueName, client, 0, loggerFactory); await Patiently.AssertThatAsync(() => queue.ExistsAsync(), 60.Seconds()); dynamic policyJson = JObject.Parse(queue.Policy); policyJson.Statement.Count.ShouldBe(1, $"Expecting 1 statement in Sqs policy but found {policyJson.Statement.Count}."); }); }
public async Task Then_The_Handler_Only_Receives_The_Message_Once() { // Arrange var handler = new ExactlyOnceHandlerWithTimeout(); var services = GivenJustSaying() .ConfigureJustSaying((builder) => builder.WithLoopbackTopic <SimpleMessage>(UniqueName)) .ConfigureJustSaying((builder) => builder.Services((config) => config.WithMessageLock(() => new MessageLockStore()))) .AddJustSayingHandlers(new[] { handler }); await WhenAsync( services, async (publisher, listener, serviceProvider, cancellationToken) => { listener.Start(cancellationToken); var message = new SimpleMessage(); // Act await publisher.PublishAsync(message, cancellationToken); await publisher.PublishAsync(message, cancellationToken); await Task.Delay(5.Seconds()); // Assert handler.NumberOfTimesIHaveBeenCalled().ShouldBe(1); }); }