public void Published_event_gets_handled() { RollbackHandlerRegistry.ImplProvider = new TestImplProv(); var sem = new SemaphoreSlim(0, 1); var bus = new RabbitMqEventBus(new RabbitMqSettings() { ConnectionString = TestContextUtils.GetParameterOrDefault("rabbitmq-connection-string", "host=localhost"), }, Mock.Of <ILogger <RabbitMqEventBus> >()); var toPublish = new TestAppEvent(new CorrelationId("111"), new TestEvent()); var handler = new TestHandler(new AppEventRabbitMQBuilder(), (ev) => { ev.Should().BeEquivalentTo(toPublish); sem.Release(); }); var stubImplProvider = new Mock <IImplProvider>(); stubImplProvider.Setup(provider => provider.Get(typeof(TestHandler))) .Returns(handler); bus.InitSubscribers("Test.IntegrationTests", stubImplProvider.Object); bus.Publish(toPublish); if (!sem.Wait(TimeSpan.FromSeconds(60))) { Assert.Fail(); } }
public async Task PublishDomainEventFromRabbitMq() { CourseCreatedDomainEvent domainEvent = CourseCreatedDomainEventMother.Random(); await _bus.Publish(new List <DomainEvent>() { domainEvent }); await _consumer.Consume(); Eventually(() => Assert.True(_subscriber.HasBeenExecuted)); }
public Task Execute(IJobExecutionContext context) { var result = _bus.Publish(_event); if (result) { LoggerExtensions.LogInfo("Service published an event in bus"); } else { LoggerExtensions.LogError("Can't publish an event in bus!"); } return(Task.CompletedTask); }
public void RollbackHandler_gets_called_once() { int called = 0; var sem = new SemaphoreSlim(0, 1); var toPublish = new TestAppEvent(new CorrelationId("123"), new TestEvent(), new TestCommandBase()); var rollbackHandler = new TestCommandRollbackHandler(new Action <IAppEvent <Event> >(ev => { called++; Assert.IsTrue(CheckRollbackAppEvent(ev)); sem.Release(); })); rollbackHandler.Throws = true; RollbackHandlerRegistry.ImplProvider = new TestImplProv(); RollbackHandlerRegistry.RegisterCommandRollbackHandler(nameof(TestCommandBase), provider => rollbackHandler); var bus = new RabbitMqEventBus(new RabbitMqSettings() { ConnectionString = TestContextUtils.GetParameterOrDefault("rabbitmq-connection-string", "host=localhost"), }, Mock.Of <ILogger <RabbitMqEventBus> >()); var handler = new TestHandler(new AppEventRabbitMQBuilder(), null); handler.Throws = true; bus.InitSubscribers(new[] { new RabbitMqEventConsumerFactory(() => handler, "test"), }); bus.Publish(toPublish); if (!sem.Wait(TimeSpan.FromSeconds(60))) { Assert.Fail(); } ; Thread.Sleep(10); called.Should() .Be(1); }