internal ClusterActorSystem( ClusterConfiguration configuration, Assembly[] assemblies, Action <IServiceCollection> di, ActorInvocationPipeline pipeline, IActorRefInvoker invoker) : base(invoker) { Pipeline = pipeline; using (Trace.Execution("Orleans silo initialization")) { var builder = new SiloHostBuilder() .UseConfiguration(configuration) .ConfigureServices(services => { services.AddSingleton <IActorSystem>(this); services.AddSingleton(this); services.TryAddSingleton <IActorActivator>(x => new DefaultActorActivator(x)); services.AddSingleton <Func <MethodInfo, InvokeMethodRequest, IGrain, string> >(DashboardIntegration.Format); di?.Invoke(services); }); builder.ConfigureApplicationParts(apm => apm .AddFromAppDomain() .WithCodeGeneration()); Host = builder.Build(); } Silo = Host.Services.GetRequiredService <Silo>(); Initialize(Host.Services); }
private static async Task <ISiloHost> StartSilo(Type[] types) { // define the cluster configuration var builder = new SiloHostBuilder() .UseLocalhostClustering() .Configure <ClusterOptions>(options => { options.ClusterId = "dev"; options.ServiceId = "NekaraOrleansBenchmarks"; }); //.ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(LockGrain).Assembly).WithReferences()); //.ConfigureLogging(logging => logging.AddConsole()); types.ToList().ForEach(t => { Console.WriteLine("[Orleans TestPlatform] - Adding Type " + t.FullName + "'s Assembly " + t.Assembly.FullName); builder.ConfigureApplicationParts(parts => parts.AddApplicationPart(t.Assembly).WithReferences()); }); var host = builder.Build(); await host.StartAsync(); Console.WriteLine("... Silo successfully started \n"); return(host); }
private static async Task <ISiloHost> InitialiseSilo() { var builder = new SiloHostBuilder() .UseLocalhostClustering() .Configure <ClusterOptions>(options => { options.ClusterId = GameConstant.ClusterId; options.ServiceId = GameConstant.ServiceId; }) .Configure <GrainCollectionOptions>(options => { options.CollectionAge = TimeSpan.FromSeconds(61); options.DeactivationTimeout = TimeSpan.FromSeconds(5); options.CollectionQuantum = TimeSpan.FromSeconds(1); }) .ConfigureLogging(log => log.SetMinimumLevel(LogLevel.Warning).AddConsole()); builder.ConfigureApplicationParts(parts => { parts.AddApplicationPart(typeof(GChatRoomEntry).Assembly).WithReferences(); }); var host = builder.Build(); await host.StartAsync(); return(host); }
protected Task RunSilo() { try { var builder = new SiloHostBuilder(); builder.Configure <EndpointOptions>(options => options.AdvertisedIPAddress = IPAddress.Loopback) .UseLocalhostClustering() .Configure <ClusterOptions>(options => { options.ClusterId = TableRoom.GameConstant.ClusterId; options.ServiceId = TableRoom.GameConstant.ServiceId; }) .Configure <GrainCollectionOptions>(options => { options.CollectionAge = TimeSpan.FromSeconds(61); options.DeactivationTimeout = TimeSpan.FromSeconds(5); options.CollectionQuantum = TimeSpan.FromSeconds(1); }) .ConfigureLogging(log => log.SetMinimumLevel(LogLevel.Error).AddConsole());//LogLevel.Warning builder.ConfigureApplicationParts(parts => { parts.AddApplicationPart(typeof(GChatRoomEntry).Assembly).WithReferences(); }); m_Host = builder.Build(); m_Host.StartAsync().Wait(); } catch (Exception e) { Log.Debug(e.ToString()); } return(Task.CompletedTask); }
static void Main(string[] args) { config = new ConfigurationBuilder() .AddJsonFile("appsettings.json", true, true) .AddEnvironmentVariables() .Build(); // Console.WriteLine($"DBConnection is :{dbConnection}"); var siloBuilder = new SiloHostBuilder() .UseDashboard(option => { }) .Configure <ClusterOptions>(options => { options.ClusterId = config.GetValue <string>("ClusterId"); options.ServiceId = config.GetValue <string>("ServiceId"); }); #if (DEBUG) siloBuilder = configLocalEnv(siloBuilder); #else siloBuilder = configAzureEnv(siloBuilder, config); #endif siloBuilder.ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(Player).Assembly).WithReferences()) .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(WorldService).Assembly).WithReferences()) .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(Game.Combat.Grains.Combat).Assembly).WithReferences()) .ConfigureLogging(builder => builder.SetMinimumLevel(LogLevel.Warning).AddConsole()) .AddApplicationInsightsTelemetryConsumer(config.GetValue <string>("AIKey")) .ConfigureAppConfiguration(c => { c.AddJsonFile("appsettings.json", true, true) .AddEnvironmentVariables(); }) .ConfigureServices(service => { service.AddSingleton <ICharacterFactory, CharacterFactory>(); service.AddSingleton <RoomFactory>(); }); silo = siloBuilder.Build(); CommandHelper.BasePath = config.GetValue <string>(Constants.MudLibKey); Task.Run(StartSilo); AssemblyLoadContext.Default.Unloading += context => { Task.Run(StopSilo); siloStopped.WaitOne(); }; siloStopped.WaitOne(); }
protected override Task OnInit() { var builder = new SiloHostBuilder() .UseLocalhostClustering() .Configure <ClusterOptions>(options => { options.ClusterId = "dev"; options.ServiceId = "AdventureApp"; }) .Configure <EndpointOptions>(options => options.AdvertisedIPAddress = IPAddress.Loopback); foreach (var t in types) { builder.ConfigureApplicationParts(parts => parts.AddApplicationPart(t.Assembly).WithReferences()); } builder.ConfigureLogging(logging => logging.AddConsole()); silo = builder.Build(); return(Task.CompletedTask); }
public PingBenchmark(int numSilos, bool startClient, bool grainsOnSecondariesOnly = false) { for (var i = 0; i < numSilos; ++i) { var primary = i == 0 ? null : new IPEndPoint(IPAddress.Loopback, 11111); var siloBuilder = new SiloHostBuilder() .ConfigureDefaults() .UseLocalhostClustering( siloPort: 11111 + i, gatewayPort: 30000 + i, primarySiloEndpoint: primary); if (i == 0 && grainsOnSecondariesOnly) { siloBuilder.ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(IPingGrain).Assembly)); siloBuilder.ConfigureServices(services => { services.Remove(services.First(s => s.ImplementationType?.Name == "ApplicationPartValidator")); }); } else { siloBuilder.ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(IPingGrain).Assembly) .AddApplicationPart(typeof(PingGrain).Assembly)); } var silo = siloBuilder.Build(); silo.StartAsync().GetAwaiter().GetResult(); this.hosts.Add(silo); } if (grainsOnSecondariesOnly) { Thread.Sleep(4000); } if (startClient) { var clientBuilder = new ClientBuilder() .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(IPingGrain).Assembly)) .Configure <ClusterOptions>(options => options.ClusterId = options.ServiceId = "dev"); if (numSilos == 1) { clientBuilder.UseLocalhostClustering(); } else { var gateways = Enumerable.Range(30000, numSilos).Select(i => new IPEndPoint(IPAddress.Loopback, i)).ToArray(); clientBuilder.UseStaticClustering(gateways); } this.client = clientBuilder.Build(); this.client.Connect().GetAwaiter().GetResult(); var grainFactory = this.client; this.grain = grainFactory.GetGrain <IPingGrain>(Guid.NewGuid().GetHashCode()); this.grain.Run().GetAwaiter().GetResult(); } }
private ISiloHost InitialiseSilo(int siloPort, int gatewayPort) { var gameconfig = GameModuleManager.Instance.GetModule <ConfigManager>().GameConfig; var builder = new SiloHostBuilder() /* * .Configure<EndpointOptions>(options => * { * options.AdvertisedIPAddress = IPAddress.Parse(gameconfig.SiloIp); * options.SiloPort = gameconfig.SiloPort; * options.GatewayPort = gameconfig.SiloGatePort; * * options.GatewayListeningEndpoint = new IPEndPoint(IPAddress.Any, 40000); * options.SiloListeningEndpoint = new IPEndPoint(IPAddress.Any, 50000); * })*/ //.UseLocalhostClustering(gameconfig.SiloPort, gameconfig.SiloGatePort) //.ConfigureEndpoints(gameconfig.SiloIp, gameconfig.SiloPort, gameconfig.SiloGatePort) //.UseLocalhostClustering() .UseAdoNetClustering(options => { options.Invariant = gameconfig.DB_Name; //GameConstant.DB_Name; options.ConnectionString = gameconfig.Str_DBConnection; //GameConstant.Str_DBConnection; }) .ConfigureEndpoints(siloPort: siloPort, gatewayPort: gatewayPort) .Configure <ClusterOptions>(options => { options.ClusterId = gameconfig.ClusterId; options.ServiceId = gameconfig.ServiceId; }) .Configure <GrainCollectionOptions>(options => { options.CollectionAge = TimeSpan.FromSeconds(61); options.DeactivationTimeout = TimeSpan.FromSeconds(5); options.CollectionQuantum = TimeSpan.FromSeconds(1); }) .ConfigureLogging(log => log.SetMinimumLevel(LogLevel.Warning).AddConsole()); builder.ConfigureApplicationParts(parts => { parts.AddApplicationPart(typeof(HallGrains.GateWayGrain).Assembly).WithReferences(); }); /* * if(gatewayPort == 30000) * { * builder.ConfigureApplicationParts(parts => * { * parts.AddApplicationPart(typeof(HallGrains.MainEntryGrain).Assembly).WithReferences(); * }); * } * else * { * builder.ConfigureApplicationParts(parts => * { * parts.AddApplicationPart(typeof(MysqlGrains.MysqlEntryGrain).Assembly).WithReferences(); * }); * }*/ var host = builder.Build(); host.StartAsync().Wait(); return(host); }
private static async Task <ISiloHost> InitialiseSilo(int siloPort, int gatewayPort) { var builder = new SiloHostBuilder() /* * .UseAdoNetClustering(options => * { * options.Invariant = Invariant; * options.ConnectionString = ConnectionString; * }) * .UseAdoNetReminderService(options => * { * options.Invariant = Invariant; * options.ConnectionString = ConnectionString; * })*/ /* * .AddAdoNetGrainStorage("OrleansStorage", options => * { * options.Invariant = Invariant; * options.ConnectionString = ConnectionString; * options.UseJsonFormat = true; * })*/ .Configure <EndpointOptions>(options => options.AdvertisedIPAddress = IPAddress.Loopback) //.ConfigureEndpoints(siloPort: siloPort, gatewayPort: gatewayPort) .UseLocalhostClustering() .Configure <ClusterOptions>(options => { options.ClusterId = ClusterId; options.ServiceId = ServiceId; }) .Configure <GrainCollectionOptions>(options => { options.CollectionAge = TimeSpan.FromSeconds(61); options.DeactivationTimeout = TimeSpan.FromSeconds(5); options.CollectionQuantum = TimeSpan.FromSeconds(1); }) //.AddMemoryGrainStorageAsDefault() //.ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(MainEntryGrain).Assembly).WithReferences()) .ConfigureLogging(log => log.SetMinimumLevel(LogLevel.Warning).AddConsole()); //.ConfigureLogging(log => log.AddConsole()) //.AddMemoryGrainStorage(HallGrains.GameConstant.HallPubSubStore) //.AddSimpleMessageStreamProvider(HallGrains.GameConstant.HallStreamProvider) ; builder.ConfigureApplicationParts(parts => { parts.AddApplicationPart(typeof(HallGrains.MainEntryGrain).Assembly).WithReferences(); //parts.AddApplicationPart(typeof(MysqlGrains.MysqlEntryGrain).Assembly).WithReferences(); }); /* * if(gatewayPort == 30000) * { * builder.ConfigureApplicationParts(parts => * { * parts.AddApplicationPart(typeof(HallGrains.MainEntryGrain).Assembly).WithReferences(); * }); * } * else * { * builder.ConfigureApplicationParts(parts => * { * parts.AddApplicationPart(typeof(MysqlGrains.MysqlEntryGrain).Assembly).WithReferences(); * }); * }*/ var host = builder.Build(); await host.StartAsync(); return(host); }