private async Task AssertMessagePublishedAndReceivedAsync <T>( IServiceCollection services, IHandlerAsync <T> handler, TaskCompletionSource <object> completionSource) where T : Message { IServiceProvider serviceProvider = services.BuildServiceProvider(); IMessagePublisher publisher = serviceProvider.GetRequiredService <IMessagePublisher>(); IMessagingBus listener = serviceProvider.GetRequiredService <IMessagingBus>(); using (var source = new CancellationTokenSource(Timeout)) { listener.Start(source.Token); var message = new SimpleMessage(); // Act await publisher.PublishAsync(message, source.Token); // Assert completionSource.Task.Wait(source.Token); await handler.Received(1).Handle(Arg.Any <T>()); } }
protected override Task ExecuteAsync(CancellationToken stoppingToken) { _logger.LogInformation("Kitchen subscriber running"); _bus.Start(stoppingToken); return(Task.CompletedTask); }
public async Task Can_Create_Messaging_Bus_Fluently_For_A_Queue() { // Arrange var completionSource = new TaskCompletionSource <object>(); var handler = Substitute.For <IHandlerAsync <SimpleMessage> >(); handler.Handle(Arg.Any <SimpleMessage>()) .Returns(true) .AndDoes((_) => completionSource.SetResult(null)); var container = new Container( (registry) => { registry.For <ILoggerFactory>() .Use(() => OutputHelper.ToLoggerFactory()) .Singleton(); registry.For <IHandlerAsync <SimpleMessage> >() .Use(handler); registry.AddJustSaying( (builder) => { builder.Client((options) => options.WithBasicCredentials("accessKey", "secretKey").WithServiceUri(TestEnvironment.SimulatorUrl)) .Messaging((options) => options.WithRegions("eu-west-1")) .Publications((options) => options.WithQueue <SimpleMessage>()) .Subscriptions((options) => options.ForQueue <SimpleMessage>()); }); }); IMessagePublisher publisher = container.GetInstance <IMessagePublisher>(); IMessagingBus listener = container.GetInstance <IMessagingBus>(); var message = new SimpleMessage(); using (var source = new CancellationTokenSource(TimeSpan.FromSeconds(20))) { listener.Start(source.Token); // Act await publisher.PublishAsync(message, source.Token); completionSource.Task.Wait(source.Token); // Assert await handler.Received().Handle(Arg.Any <SimpleMessage>()); } }
public void Can_Create_Messaging_Bus() { // Arrange var services = new ServiceCollection() .AddLogging((p) => p.AddXUnit(OutputHelper)) .AddJustSaying("eu-west-1") .AddJustSayingHandler <QueueMessage, QueueHandler>(); IServiceProvider serviceProvider = services.BuildServiceProvider(); IMessagePublisher publisher = serviceProvider.GetRequiredService <IMessagePublisher>(); IMessagingBus listener = serviceProvider.GetRequiredService <IMessagingBus>(); using (var source = new CancellationTokenSource(TimeSpan.FromSeconds(20))) { // Act listener.Start(source.Token); } }
public async Task Can_Create_Messaging_Bus_Fluently_For_A_Queue() { // Arrange var services = new ServiceCollection() .AddLogging((p) => p.AddXUnit(OutputHelper)) .AddJustSaying( (builder) => { builder.Client((options) => options.WithBasicCredentials("accessKey", "secretKey").WithServiceUri(TestEnvironment.SimulatorUrl)) .Messaging((options) => options.WithRegions("eu-west-1")) .Publications((options) => options.WithQueue <QueueMessage>()) .Subscriptions((options) => options.ForQueue <QueueMessage>()) .Services((options) => options.WithMessageMonitoring(() => new MyMonitor())); }) .AddJustSayingHandler <QueueMessage, QueueHandler>(); IServiceProvider serviceProvider = services.BuildServiceProvider(); IMessagePublisher publisher = serviceProvider.GetRequiredService <IMessagePublisher>(); IMessagingBus listener = serviceProvider.GetRequiredService <IMessagingBus>(); using (var source = new CancellationTokenSource(TimeSpan.FromSeconds(20))) { // Act listener.Start(source.Token); var message = new QueueMessage(); await publisher.PublishAsync(message, source.Token); // Assert while (!source.IsCancellationRequested && !QueueHandler.MessageIds.Contains(message.Id)) { await Task.Delay(TimeSpan.FromSeconds(0.2), source.Token); } QueueHandler.MessageIds.ShouldContain(message.Id); } }
public async Task Can_Create_Messaging_Bus_With_Contributors() { // Arrange var services = new ServiceCollection() .AddLogging((p) => p.AddXUnit(OutputHelper)) .AddJustSaying() .AddSingleton <IMessageBusConfigurationContributor, AwsContributor>() .AddSingleton <IMessageBusConfigurationContributor, MessagingContributor>() .AddSingleton <IMessageBusConfigurationContributor, QueueContributor>() .AddSingleton <IMessageBusConfigurationContributor, RegionContributor>() .AddJustSayingHandler <QueueMessage, QueueHandler>() .AddSingleton <MyMonitor>(); IServiceProvider serviceProvider = services.BuildServiceProvider(); IMessagePublisher publisher = serviceProvider.GetRequiredService <IMessagePublisher>(); IMessagingBus listener = serviceProvider.GetRequiredService <IMessagingBus>(); using (var source = new CancellationTokenSource(TimeSpan.FromSeconds(20))) { // Act listener.Start(source.Token); var message = new QueueMessage(); await publisher.PublishAsync(message, source.Token); // Assert while (!source.IsCancellationRequested && !QueueHandler.MessageIds.Contains(message.Id)) { await Task.Delay(TimeSpan.FromSeconds(0.2), source.Token); } QueueHandler.MessageIds.ShouldContain(message.Id); } }