Пример #1
0
        public async Task <int> GetDesiredPackageEventRateAsync()
        {
            // Ensure the desired rate is within the configured lower and upper bounds. A desired rate that's outside
            // the bounds indicates that the job was redeployed with different configuration values.
            var finalState = await _state.MaybeUpdateStateAsync(state =>
            {
                if (state.DesiredPackageEventRate < _config.MinPackageEventRate)
                {
                    _logger.LogInformation(
                        "Overriding desired package event rate {ToRate} from {FromRate}",
                        _config.MinPackageEventRate,
                        state.DesiredPackageEventRate);

                    state.DesiredPackageEventRate = _config.MinPackageEventRate;

                    return(true);
                }
                else if (state.DesiredPackageEventRate > _config.MaxPackageEventRate)
                {
                    _logger.LogInformation(
                        "Overriding desired package event rate {ToRate} from {FromRate}",
                        _config.MaxPackageEventRate,
                        state.DesiredPackageEventRate);

                    state.DesiredPackageEventRate = _config.MaxPackageEventRate;

                    return(true);
                }

                // The rate is within the expected bounds. Don't update anything.
                return(false);
            });

            return(finalState.DesiredPackageEventRate);
        }