Esempio n. 1
0
        public HostedClusterClient(
            IBuildConfig buildConfig,
            IOrleansConfig clusterConfig)
        {
            var clientBuilder = new ClientBuilder()
                                .AddSimpleMessageStreamProvider(StreamProvider.Transient)
                                .UseAzureStorageClustering(options =>
            {
                options.ConnectionString = clusterConfig.AzureStorageConnectionString;
                options.TableName        = clusterConfig.StorageTableName;
            })
                                .Configure <ClusterOptions>(options =>
            {
                options.ServiceId = clusterConfig.ServiceId;
                options.ClusterId = clusterConfig.ClusterId;
            });

            if (buildConfig.Equals(BuildConfig.Debug))
            {
                clientBuilder
                .Configure <ClusterMembershipOptions>(x => x.ValidateInitialConnectivity = false);
            }

            Client = clientBuilder.Build();
        }
        public static ISiloBuilder ConfigureSilo(this ISiloBuilder siloBuilder, IOrleansConfig clusterConfig, Assembly grainAssembly)
        {
            siloBuilder
            .UseDashboard(options =>
            {
                options.Host     = "*";
                options.Port     = clusterConfig.DashboardPort;
                options.HostSelf = true;
                options.CounterUpdateIntervalMs = 10000;
            })
            .UseLinuxEnvironmentStatistics();

            siloBuilder
            .UseAzureStorageClustering(options =>
            {
                options.ConnectionString = clusterConfig.AzureStorageConnectionString;
                options.TableName        = clusterConfig.StorageTableName;
            })
            .ConfigureApplicationParts(parts =>
            {
                parts.AddFromApplicationBaseDirectory();
                parts.AddApplicationPart(grainAssembly).WithReferences();
            });

            siloBuilder
            .AddSimpleMessageStreamProvider(StreamProvider.Transient, options => options.FireAndForgetDelivery = true)
            .AddAzureTableGrainStorage("PubSubStore", options => options.ConnectionString = clusterConfig.AzureStorageConnectionString);

            if (clusterConfig.BuildConfig.Equals(BuildConfig.Debug))
            {
                siloBuilder.ConfigureEndpoints(Dns.GetHostName(), 11111, 30000);
                siloBuilder.Configure <ClusterMembershipOptions>(x => x.ValidateInitialConnectivity = false);
                siloBuilder.Configure <ClusterOptions>(options =>
                {
                    options.ServiceId = clusterConfig.ServiceId;
                    options.ClusterId = clusterConfig.ClusterId;
                });
            }
            else
            {
                siloBuilder.UseKubernetesHosting();
            }

            return(siloBuilder);
        }