コード例 #1
0
        public override async Task StartAsync(CancellationToken token)
        {
            await Environment.StartAsync(token).ConfigureAwait(false);

            await base.StartAsync(token).ConfigureAwait(false);

            var count = 0;

            while (count < RetryCount)
            {
                try
                {
                    foreach (var qe in QueryEvaluators)
                    {
                        qe.GetInstance <IReactiveConnection>().Ping();
                    }

                    QueryCoordinator.GetInstance <IReactiveConnection>().Ping();
                    break;
                }
#pragma warning disable CA1031 // REWIEW: Do not catch general exception types.
                catch
                {
                    Console.WriteLine("Waiting for services to start (retry attempt {0})...", ++count);
                }
#pragma warning restore CA1031
            }

            if (count == RetryCount)
            {
                throw new InvalidOperationException("Error starting the multi-role platform.");
            }
        }
コード例 #2
0
        public virtual async Task StopAsync(CancellationToken token)
        {
            await QueryCoordinator.StopAsync(token).ConfigureAwait(false);

            foreach (var queryEvaluator in QueryEvaluators)
            {
                await queryEvaluator.StopAsync(token).ConfigureAwait(false);
            }
        }
コード例 #3
0
        public virtual async Task StartAsync(CancellationToken token)
        {
            var clientProvider = new BinaryClientFormatterSinkProvider();
            var serverProvider = new BinaryServerFormatterSinkProvider {
                TypeFilterLevel = TypeFilterLevel.Full
            };
            var props = new System.Collections.Hashtable
            {
                { "port", 0 },
                { "name", Guid.NewGuid().ToString() },
                { "typeFilterLevel", TypeFilterLevel.Full }
            };

            ChannelServices.RegisterChannel(new TcpChannel(props, clientProvider, serverProvider), ensureSecurity: false);

            _configuration.MessagingConnection     = _environment.MessagingService.GetInstance <IReactiveMessagingConnection>();
            _configuration.StateStoreConnection    = _environment.StateStoreService.GetInstance <IReactiveStateStoreConnection>();
            _configuration.KeyValueStoreConnection = _environment.KeyValueStoreService.GetInstance <ITransactionalKeyValueStoreConnection>();

            _configuration.StorageType = _environment.StorageType;
            if (_configuration.StorageType == MetadataStorageType.Remoting)
            {
                _configuration.StorageConnection = _environment.MetadataService.GetInstance <IReactiveStorageConnection>();
            }
            else if (_configuration.StorageType == MetadataStorageType.Azure)
            {
                _configuration.AzureConnectionString = _environment.AzureConnectionString;
            }

            foreach (var queryEvaluator in QueryEvaluators)
            {
                if (_configuration.StorageType == MetadataStorageType.Remoting)
                {
                    queryEvaluator.Register(_environment.MetadataService);
                }

                queryEvaluator.Register(_environment.StateStoreService);
                queryEvaluator.Register(_environment.MessagingService);
                queryEvaluator.Register(_environment.KeyValueStoreService);
                await queryEvaluator.StartAsync(token).ConfigureAwait(false);

                _configuration.QueryEvaluatorConnections.Add(queryEvaluator.GetInstance <IReactiveQueryEvaluatorConnection>());
                QueryCoordinator.Register(queryEvaluator);
            }

            if (_configuration.StorageType == MetadataStorageType.Remoting)
            {
                QueryCoordinator.Register(_environment.MetadataService);
            }
            await QueryCoordinator.StartAsync(token).ConfigureAwait(false);
        }