public BuyCreditsCommandHandler(ILogger <BuyCreditsCommandHandler> logger, IUserRepository userRepository, EventBusService eventBusService) : base(logger) { _userRepository = userRepository; _eventBusService = eventBusService; RollbackHandlerRegistry.RegisterCommandRollbackHandler(nameof(BuyCreditsCommand), provider => { return(new BuyCreditsCommandRollbackHandler(provider.Get <ILogger <BuyCreditsCommandRollbackHandler> >(), provider.Get <IUserRepository>())); }); }
public BidCommandHandler(IAuctionRepository auctionRepository, EventBusService eventBusService, ILogger <BidCommandHandler> logger, IRequestStatusService requestStatusService, IUserRepository userRepository) : base(logger) { _auctionRepository = auctionRepository; _eventBusService = eventBusService; _logger = logger; _requestStatusService = requestStatusService; _userRepository = userRepository; RollbackHandlerRegistry.RegisterCommandRollbackHandler(nameof(BidCommand), provider => new BidRollbackHandler(provider)); }
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); }
private void HandleErrorMessage(IMessage <Error> message, MessageReceivedInfo info) { try { _logger.LogWarning("Handling error message: {@message} with routingKey: {routingKey}", message, info.RoutingKey); IAppEvent <Event> commandEvent = ParseEventFromMessage(message); if (commandEvent != null) { var commandName = commandEvent.CommandBase?.GetType() .Name; var handler = RollbackHandlerRegistry.GetCommandRollbackHandler(commandName); TryExecuteCommandRollback(handler, commandEvent); } else { _logger.LogError("Parsed command event is null! RoutingKey: {routingKey}", info.RoutingKey); } } catch (Exception) { _logger.LogError("Cannot handle error message"); } }
protected override void SetupRollbackHandler() { RollbackHandlerRegistry.RegisterCommandRollbackHandler(nameof(CreateAuctionCommand), provider => _createAuctionRollbackHandler); }
protected virtual void SetupRollbackHandler() => RollbackHandlerRegistry.RegisterCommandRollbackHandler(nameof(CreateAuctionCommand), provider => new CreateAuctionRollbackHandler(provider));