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(); } }
private void InitRabbitMQ() { var loggerMock = new Mock <ILogger <RabbitMqEventBus> >(); ServiceProviderMock = new Mock <IServiceProvider>(); var connectionFactoryMock = new Mock <IConnectionFactory>(); ExchangeResolverMock = new Mock <IExchangeResolver>(); connectionFactoryMock.Setup(x => x.CreateConnection()).Returns(new Mock <IConnection>().Object); RabbitMq = new RabbitMqEventBus(loggerMock.Object, ServiceProviderMock.Object, connectionFactoryMock.Object, ExchangeResolverMock.Object); }
public void SetupEventBus( params IEventConsumer[] eventHandlers) { var rabbitMqConnectionString = TestContextUtils.GetParameterOrDefault("rabbitmq-connection-string", "host=localhost"); _rabbitMqEventBus = new RabbitMqEventBus(new RabbitMqSettings() { ConnectionString = rabbitMqConnectionString }, Mock.Of <ILogger <RabbitMqEventBus> >()); _rabbitMqEventBus.InitSubscribers(eventHandlers.Select(h => new RabbitMqEventConsumerFactory(() => h, h.MessageType.Name)).ToArray()); EventBus = new EventBusService(_rabbitMqEventBus, AppEventBuilder); }
public RabbitMqEventBusShould() { _subscriber = GetService <TestAllWorksOnRabbitMqEventsPublished>(); _bus = GetService <RabbitMqEventBus>(); _consumer = GetService <RabbitMqDomainEventsConsumer>(); var config = GetService <RabbitMqConfig>(); var channel = config.Channel(); var fakeSubscriber = FakeSubscriber(); CleanEnvironment(channel, fakeSubscriber); channel.ExchangeDeclare(TestDomainEvents, ExchangeType.Topic); CreateQueue(channel, fakeSubscriber); _consumer.WithSubscribersInformation(fakeSubscriber); }
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); }
static void Main(string[] args) { var environmentName = System.Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile($"appsettings.json", true, true) .AddJsonFile($"appsettings.{environmentName}.json", true, true) .AddEnvironmentVariables(); var configuration = builder.Build(); var connectionStringSection = configuration.GetSection("connectionString"); var unitOfWorkConnection = connectionStringSection.Get <MySqlConnection>(); var unitOfWorkFactory = new MySqlUnitOfWorkFactory(unitOfWorkConnection); var messageBroker = new QueryMessageBroker(unitOfWorkFactory, (unitOfWork, contentType) => new VersionService(new MySqlVersionRepository(unitOfWork, contentType))); messageBroker.Bind <ProductCreateQueryMessageFilter>(); messageBroker.Bind <ClientCreateQueryMessageFilter>(); messageBroker.Bind <AccountCreateQueryMessageFilter>(); messageBroker.Bind <AccountUpdateQueryMessageFilter>(); messageBroker.Bind <ClientUpdateQueryMessageFilter>(); messageBroker.Bind <AccountActivateQueryMessageFilter>(); var rabbitConnectionStringSection = configuration.GetSection("rabbitConnectionString"); var rabbitMqConnectionString = rabbitConnectionStringSection.Get <RabbitMqConnectionString>(); var eventBus = new RabbitMqEventBus(rabbitMqConnectionString); eventBus.Subscribe("ProductCreated", ProductCreatedEventConsumer.ConsumerFactory(messageBroker)); eventBus.Subscribe("ClientCreated", ClientCreatedEventConsumer.ConsumerFactory(messageBroker)); eventBus.Subscribe("ClientUpdated", ClientUpdatedEventConsumer.ConsumerFactory(messageBroker)); eventBus.Subscribe("AccountCreated", AccountCreatedEventConsumer.ConsumerFactory(messageBroker)); eventBus.Subscribe("AccountBalanceChanged", AccountBalanceChangedEventConsumer.ConsumerFactory(messageBroker)); eventBus.Subscribe("AccountTransfered", AccountTransferedEventConsumer.ConsumerFactory(messageBroker)); eventBus.Subscribe("AccountActivated", AccountActivatedEventConsumer.ConsumerFactory(messageBroker)); }
public PublishEventJob(RabbitMqEventBus bus, TimerEvent @event) { _bus = bus; _event = @event; }
public SubscriberHostedService(RabbitMqEventBus bus, TimerEventHandler handler) { _bus = bus; _handler = handler; }