public DatabaseServerRegistrarAndMessengerComponent(IRuntimeState runtime, IServerRegistrar serverRegistrar, IServerMessenger serverMessenger, IServerRegistrationService registrationService, ILogger logger, IndexRebuilder indexRebuilder)
        {
            _runtime             = runtime;
            _logger              = logger;
            _registrationService = registrationService;
            _indexRebuilder      = indexRebuilder;

            // create task runner for DatabaseServerRegistrar
            _registrar = serverRegistrar as DatabaseServerRegistrar;
            if (_registrar != null)
            {
                _touchTaskRunner = new BackgroundTaskRunner <IBackgroundTask>("ServerRegistration",
                                                                              new BackgroundTaskRunnerOptions {
                    AutoStart = true
                }, logger);
            }

            // create task runner for BatchedDatabaseServerMessenger
            _messenger = serverMessenger as BatchedDatabaseServerMessenger;
            if (_messenger != null)
            {
                _processTaskRunner = new BackgroundTaskRunner <IBackgroundTask>("ServerInstProcess",
                                                                                new BackgroundTaskRunnerOptions {
                    AutoStart = true
                }, logger);
            }
        }
        public DatabaseServerRegistrarAndMessengerComponent(IRuntimeState runtime, IServerRegistrar serverRegistrar, IServerMessenger serverMessenger, IServerRegistrationService registrationService, ILogger logger, IndexRebuilder indexRebuilder)
        {
            _registrar = serverRegistrar as DatabaseServerRegistrar;
            if (_registrar == null)
            {
                throw new Exception("panic: registar.");
            }

            _messenger = serverMessenger as BatchedDatabaseServerMessenger;
            if (_messenger == null)
            {
                throw new Exception("panic: messenger");
            }

            _runtime             = runtime;
            _logger              = logger;
            _registrationService = registrationService;
            _indexRebuilder      = indexRebuilder;

            _touchTaskRunner = new BackgroundTaskRunner <IBackgroundTask>("ServerRegistration",
                                                                          new BackgroundTaskRunnerOptions {
                AutoStart = true
            }, logger);
            _processTaskRunner = new BackgroundTaskRunner <IBackgroundTask>("ServerInstProcess",
                                                                            new BackgroundTaskRunnerOptions {
                AutoStart = true
            }, logger);
        }