コード例 #1
0
        public void Record()
        {
            _stateMaintainer.Refresh();
            if (!_state.Configurations.Any())
            {
                return;
            }

            var samples        = _store.ServerCountSamples();
            var noRecentSample = samples.Samples.Count(isRecent) == 0;

            if (noRecentSample)
            {
                var serverCount = _state.Configurations.First().MonitoringApi.Servers().Count;

                samples.Samples = samples
                                  .Samples
                                  .OrderByDescending(x => x.Timestamp)
                                  .Take(_sampleLimit - 1)
                                  .OrderBy(x => x.Timestamp)
                                  .Append(new ServerCountSample {
                    Timestamp = _now.UtcDateTime(), Count = serverCount
                })
                                  .ToArray();

                _store.ServerCountSamples(samples);
            }
        }
コード例 #2
0
 public IEnumerable <ConfigurationInfo> QueryAllWorkerServers()
 {
     _stateMaintainer.Refresh();
     return(_state.Configurations
            .Select(x => new ConfigurationInfo(x))
            .ToArray());
 }
コード例 #3
0
 private ConfigurationInfo[] queryPublishers()
 {
     _stateMaintainer.Refresh();
     return(_state.Configurations
            .Where(x => x.Configuration.Active.GetValueOrDefault())
            .Select(x => new ConfigurationInfo(x))
            .ToArray());
 }
コード例 #4
0
 public void Start()
 {
     _stateMaintainer.Refresh();
     _state.Configurations
     .Where(x => x.IsPublisher())
     .ForEach(x =>
     {
         //
         x.EnsureJobStorageInitialized();
     });
 }
コード例 #5
0
        public void Start(IBackgroundProcess[] additionalProcesses)
        {
            var options             = _state.ReadOptions();
            var backgroundProcesses = new List <IBackgroundProcess>();

            if (additionalProcesses != null)
            {
                backgroundProcesses.AddRange(additionalProcesses);
            }
            if (_state.ReadOptions().WorkerDeterminerOptions.UseServerCountSampling)
            {
                backgroundProcesses.Add(_recorder);
            }
            var serverOptions = _state.ServerOptions ?? new BackgroundJobServerOptions();

            _stateMaintainer.Refresh();
            _state.Configurations
            .OrderBy(x => !(x.Configuration.Active ?? false))
            .ForEach(x => { startWorkerServer(x, options, serverOptions, backgroundProcesses); });
        }