コード例 #1
0
 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>()));
     });
 }
コード例 #2
0
 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));
 }
コード例 #3
0
        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);
        }
コード例 #4
0
 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");
     }
 }
コード例 #5
0
 protected override void SetupRollbackHandler()
 {
     RollbackHandlerRegistry.RegisterCommandRollbackHandler(nameof(CreateAuctionCommand),
                                                            provider => _createAuctionRollbackHandler);
 }
コード例 #6
0
 protected virtual void SetupRollbackHandler() =>
     RollbackHandlerRegistry.RegisterCommandRollbackHandler(nameof(CreateAuctionCommand),
         provider => new CreateAuctionRollbackHandler(provider));