public OrleansConfigurationBuilder(OrleansConfig orleansConfig, OrleansCodeConfig commonConfig, OrleansServiceInterfaceMapper orleansServiceInterfaceMapper, ClusterIdentity clusterIdentity, IServiceEndPointDefinition endPointDefinition, ServiceArguments serviceArguments, CurrentApplicationInfo appInfo) { _orleansConfig = orleansConfig; _commonConfig = commonConfig; _orleansServiceInterfaceMapper = orleansServiceInterfaceMapper; _clusterIdentity = clusterIdentity; _endPointDefinition = endPointDefinition; _serviceArguments = serviceArguments; _appInfo = appInfo; _siloHostBuilder = InitBuilder(); }
public OrleansConfigurationBuilder(OrleansConfig orleansConfig, OrleansCodeConfig commonConfig, OrleansServiceInterfaceMapper orleansServiceInterfaceMapper, ClusterConfiguration clusterConfiguration, ClusterIdentity clusterIdentity, IServiceEndPointDefinition endPointDefinition, OrleansLogConsumer orleansLogConsumer, ZooKeeperLogConsumer zooKeeperLogConsumer, ServiceArguments serviceArguments) { ClusterConfiguration = clusterConfiguration; SiloType = Silo.SiloType.Secondary; var globals = ClusterConfiguration.Globals; var defaults = ClusterConfiguration.Defaults; SetAgeLimits(globals, orleansConfig, orleansServiceInterfaceMapper); globals.ExpectedClusterSize = 1; // Minimizes artificial startup delay to a maximum of 0.5 seconds (instead of 10 seconds). globals.RegisterBootstrapProvider <DelegatingBootstrapProvider>(nameof(DelegatingBootstrapProvider)); defaults.ProxyGatewayEndpoint = new IPEndPoint(IPAddress.Loopback, endPointDefinition.SiloGatewayPort); defaults.Port = endPointDefinition.SiloNetworkingPort; defaults.DefaultConnectionLimit = ServicePointManager.DefaultConnectionLimit; if (serviceArguments.ProcessorAffinity != null) { defaults.MaxActiveThreads = serviceArguments.ProcessorAffinity.Length; } // Orleans log redirection defaults.TraceToConsole = false; defaults.TraceFileName = null; defaults.TraceFilePattern = null; LogManager.LogConsumers.Add(orleansLogConsumer); // ZooKeeper log redirection ZooKeeper.LogToFile = false; ZooKeeper.LogToTrace = false; ZooKeeper.LogLevel = TraceLevel.Verbose; ZooKeeper.CustomLogConsumer = zooKeeperLogConsumer; //Setup Statistics var metricsProviderType = typeof(MetricsStatisticsPublisher); globals.ProviderConfigurations.Add("Statistics", new ProviderCategoryConfiguration("Statistics") { Providers = new Dictionary <string, IProviderConfiguration> { { metricsProviderType.Name, new ProviderConfiguration(new Dictionary <string, string>(), metricsProviderType.FullName, metricsProviderType.Name) } } }); defaults.StatisticsProviderName = metricsProviderType.Name; defaults.StatisticsCollectionLevel = StatisticsLevel.Info; defaults.StatisticsLogWriteInterval = TimeSpan.Parse(orleansConfig.MetricsTableWriteInterval); defaults.StatisticsWriteLogStatisticsToTable = true; if (commonConfig.ServiceArguments.SiloClusterMode != SiloClusterMode.ZooKeeper) { defaults.HostNameOrIPAddress = "localhost"; globals.ReminderServiceType = commonConfig.UseReminders ? GlobalConfiguration.ReminderServiceProviderType.ReminderTableGrain : GlobalConfiguration.ReminderServiceProviderType.Disabled; globals.LivenessType = GlobalConfiguration.LivenessProviderType.MembershipTableGrain; if (commonConfig.ServiceArguments.SiloClusterMode == SiloClusterMode.PrimaryNode) { globals.SeedNodes.Add(new IPEndPoint(IPAddress.Loopback, endPointDefinition.SiloNetworkingPort)); SiloType = Silo.SiloType.Primary; } else { globals.SeedNodes.Add(new IPEndPoint(IPAddress.Loopback, endPointDefinition.SiloNetworkingPortOfPrimaryNode)); } } else { globals.DeploymentId = clusterIdentity.DeploymentId; globals.LivenessType = GlobalConfiguration.LivenessProviderType.ZooKeeper; globals.DataConnectionString = orleansConfig.ZooKeeper.ConnectionString; if (commonConfig.UseReminders) { globals.ServiceId = clusterIdentity.ServiceId; globals.ReminderServiceType = GlobalConfiguration.ReminderServiceProviderType.SqlServer; globals.DataConnectionStringForReminders = orleansConfig.MySql_v4_0.ConnectionString; globals.AdoInvariantForReminders = "MySql.Data.MySqlClient"; } else { globals.ReminderServiceType = GlobalConfiguration.ReminderServiceProviderType.Disabled; } } if (string.IsNullOrEmpty(commonConfig.StorageProviderTypeFullName) == false) { //globals.RegisterStorageProvider<MemoryStorage>("OrleansStorage"); globals.RegisterStorageProvider(commonConfig.StorageProviderTypeFullName, "Default"); globals.RegisterStorageProvider(commonConfig.StorageProviderTypeFullName, commonConfig.StorageProviderName); } }