Пример #1
0
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType <HealthService>()
            .As <IHealthService>()
            .SingleInstance();

            builder.RegisterType <StartupManager>()
            .As <IStartupManager>();

            builder.RegisterType <ShutdownManager>()
            .As <IShutdownManager>();

            builder.RegisterInstance(new AssetsService(new Uri(_assetServiceClientSettings.ServiceUrl), new HttpClient()))
            .As <IAssetsService>()
            .SingleInstance();

            builder.RegisterChaosKitty(_settings.ChaosKitty);

            foreach (var assetSettings in _settings.Cashout.Assets)
            {
                var periodicalHandlerSettings = new HeartbeatCashoutPeriodicalHandlerSettings
                {
                    Amount                   = assetSettings.Amount,
                    AssetId                  = assetSettings.AssetId,
                    ToAddress                = assetSettings.ToAddress,
                    ToAddressExtension       = assetSettings.ToAddressExtensions,
                    MaxCashoutInactivePeriod = assetSettings.MaxCashoutInactivePeriod,
                    ClientId                 = _settings.Cashout.User.ClientId,
                    FeeCashoutTargetClientId = _settings.Cashout.FeeCashoutTargetClientId,
                    ClientBalance            = _settings.Cashout.User.Balance,
                    ExecutionTimeout         = assetSettings.ExecutionTimeout,
                };

                builder.RegisterType <HeartbeatCashoutStarterPeriodicalHandler>()
                .WithParameter(TypedParameter.From(periodicalHandlerSettings))
                .WithParameter(TypedParameter.From(_settings.Cashout.TimerPeriod))
                .As <IStartable>()
                .SingleInstance();

                builder.RegisterType <HeartbeatCashoutTimeoutFinisherPeriodicalHandler>()
                .WithParameter(TypedParameter.From(periodicalHandlerSettings))
                .WithParameter(TypedParameter.From(assetSettings.ExecutionTimeoutTimerPeriod))
                .As <IStartable>()
                .SingleInstance();
            }
        }
Пример #2
0
        public HeartbeatCashoutTimeoutFinisherPeriodicalHandler(HeartbeatCashoutPeriodicalHandlerSettings settings,
                                                                TimeSpan timerPeriod,
                                                                ILogFactory logFactory,
                                                                ICqrsEngine cqrsEngine,
                                                                ICashoutLockRepository cashoutLockRepository)
        {
            _settings              = settings;
            _cqrsEngine            = cqrsEngine;
            _cashoutLockRepository = cashoutLockRepository;
            _log = logFactory.CreateLog(this);

            _timer = new TimerTrigger(
                $"{nameof(HeartbeatCashoutStarterPeriodicalHandler)} : {settings.AssetId}",
                timerPeriod,
                logFactory);

            _timer.Triggered += Execute;
        }