public static void ConfigureForSquidex(this ISiloBuilder builder, IConfiguration config) { builder.AddOrleansPubSub(); builder.ConfigureServices(siloServices => { siloServices.AddSingletonAs <DefaultMongoClientFactory>() .As <IMongoClientFactory>(); siloServices.AddSingletonAs <ActivationLimiter>() .As <IActivationLimiter>(); siloServices.AddScopedAs <ActivationLimit>() .As <IActivationLimit>(); siloServices.AddScoped(typeof(IGrainState <>), typeof(Infrastructure.Orleans.GrainState <>)); }); builder.ConfigureApplicationParts(parts => { parts.AddApplicationPart(SquidexEntities.Assembly); parts.AddApplicationPart(SquidexInfrastructure.Assembly); }); builder.Configure <ClusterOptions>(options => { options.Configure(); }); builder.Configure <DashboardOptions>(options => { options.HideTrace = true; }); builder.UseDashboard(options => { options.HostSelf = false; }); builder.AddIncomingGrainCallFilter <LoggingFilter>(); builder.AddIncomingGrainCallFilter <ExceptionWrapperFilter>(); builder.AddIncomingGrainCallFilter <ActivationLimiterFilter>(); builder.AddIncomingGrainCallFilter <LocalCacheFilter>(); builder.AddIncomingGrainCallFilter <StateFilter>(); var orleansPortSilo = config.GetOptionalValue("orleans:siloPort", 11111); var orleansPortGateway = config.GetOptionalValue("orleans:gatewayPort", 40000); config.ConfigureByOption("orleans:clustering", new Alternatives { ["MongoDB"] = () => { IPAddress address; var configuredAddress = config.GetOptionalValue("orleans:ipAddress", string.Empty); if (!string.IsNullOrWhiteSpace(configuredAddress)) { address = IPAddress.Parse(configuredAddress); } else { address = Helper.ResolveIPAddressAsync(Dns.GetHostName(), AddressFamily.InterNetwork).Result; } builder.ConfigureEndpoints( address, orleansPortSilo, orleansPortGateway, true); builder.UseMongoDBClustering(options => { options.Strategy = MongoDBMembershipStrategy.SingleDocument; options.Configure(config); }); }, ["Development"] = () => { builder.UseLocalhostClustering(orleansPortSilo, orleansPortGateway); } }); config.ConfigureByOption("store:type", new Alternatives { ["MongoDB"] = () => { builder.UseMongoDBReminders(options => { options.Configure(config); }); } }); }
public static void ConfigureForSquidex(this ISiloBuilder builder, IConfiguration config) { builder.AddOrleansPubSub(); builder.ConfigureServices(services => { services.AddScoped(typeof(IGrainState <>), typeof(Infrastructure.Orleans.GrainState <>)); services.AddSingletonAs <DefaultMongoClientFactory>() .As <IMongoClientFactory>(); services.AddSingletonAs <ActivationLimiter>() .As <IActivationLimiter>(); services.AddScopedAs <ActivationLimit>() .As <IActivationLimit>(); services.AddInitializer <IJsonSerializer>("Serializer (Orleans)", serializer => { J.DefaultSerializer = serializer; }, -1); }); builder.ConfigureApplicationParts(parts => { parts.AddApplicationPart(SquidexEntities.Assembly); parts.AddApplicationPart(SquidexInfrastructure.Assembly); }); builder.Configure <SchedulingOptions>(options => { options.TurnWarningLengthThreshold = TimeSpan.FromSeconds(5); }); builder.Configure <ClusterOptions>(options => { options.Configure(); }); builder.Configure <DashboardOptions>(options => { options.HideTrace = true; }); builder.UseDashboardEmbeddedFiles(); builder.UseDashboard(options => { options.HostSelf = false; }); builder.AddIncomingGrainCallFilter <LoggingFilter>(); builder.AddIncomingGrainCallFilter <ExceptionWrapperFilter>(); builder.AddIncomingGrainCallFilter <ActivationLimiterFilter>(); builder.AddIncomingGrainCallFilter <LocalCacheFilter>(); builder.AddIncomingGrainCallFilter <StateFilter>(); var(siloPort, gatewayPort) = GetPorts(config); config.ConfigureByOption("orleans:clustering", new Alternatives { ["MongoDB"] = () => { var address = GetIPAddress(config); builder.ConfigureEndpoints( address, siloPort, gatewayPort, true); builder.UseMongoDBClustering(options => { options.Strategy = MongoDBMembershipStrategy.SingleDocument; options.Configure(config); }); if (config.GetValue <bool>("orleans:kubernetes")) { builder.UseKubernetesHosting(); } }, ["Development"] = () => { builder.UseLocalhostClustering(siloPort, gatewayPort); } }); config.ConfigureByOption("store:type", new Alternatives { ["MongoDB"] = () => { builder.UseMongoDBReminders(options => { options.Configure(config); }); } }); }
public void Configure(ISiloBuilder siloBuilder) { siloBuilder.AddOrleansPubSub(); }