My Silo Host project Program.cs
Main method looks like below,
1private static async Task Main(string[] args)2{3 int siloPort, gatewayPort;4 try5 {6 siloPort = int.Parse(args[0]);7 gatewayPort = int.Parse(args[1]);8 }9 catch (Exception)10 {11 siloPort = 11111;12 gatewayPort = 30000;13 }1415 var invariant = "System.Data.SqlClient"; // for Microsoft SQL Server16 var connectionString = "Data Source=.;Initial Catalog=OrleansCluster;Integrated Security=True;Pooling=False;Max Pool Size=200;MultipleActiveResultSets=True";1718 var siloBuilder = new SiloHostBuilder()19 // Clustering information20 .Configure<ClusterOptions>(options =>21 {22 options.ClusterId = "dev";23 options.ServiceId = "ServiceApp";24 })25 .UseAdoNetClustering(options =>26 {27 options.Invariant = invariant;28 options.ConnectionString = connectionString;29 })30 .ConfigureEndpoints(siloPort: siloPort, gatewayPort: gatewayPort)3132 .ConfigureLogging(logging => logging.AddConsole());3334 using (var host = siloBuilder.Build())35 {36 await host.StartAsync();37 Console.ReadLine();38 }39}
To run multiple Silo, we need to specify different set of ports for each. Here we are achieving the same via parsing the args.
Now you can run a Silo by executing following command on the Silo project root directory
1dotnet run <siloPort> <gatewayPort>
eg,
1dotnet run 11111 300002dotnet run 11112 300013dotnet run 11113 30002