Add Role based grain placement
This commit is contained in:
@@ -14,6 +14,7 @@ using Managing.Application.Grains;
|
||||
using Managing.Application.ManageBot;
|
||||
using Managing.Application.ManageBot.Commands;
|
||||
using Managing.Application.MoneyManagements;
|
||||
using Managing.Application.Orleans;
|
||||
using Managing.Application.Scenarios;
|
||||
using Managing.Application.Shared;
|
||||
using Managing.Application.Shared.Behaviours;
|
||||
@@ -138,10 +139,12 @@ public static class ApiBootstrap
|
||||
}
|
||||
|
||||
var postgreSqlConnectionString = configuration.GetSection("PostgreSql")["Orleans"];
|
||||
var siloRole = Environment.GetEnvironmentVariable("SILO_ROLE") ?? "Trading";
|
||||
|
||||
Console.WriteLine($"Task Slot: {taskSlot}");
|
||||
Console.WriteLine($"Hostname: {hostname}");
|
||||
Console.WriteLine($"Advertised IP: {advertisedIP}");
|
||||
Console.WriteLine($"Role: {siloRole}");
|
||||
Console.WriteLine($"Silo port: {siloPort}");
|
||||
Console.WriteLine($"Gateway port: {gatewayPort}");
|
||||
Console.WriteLine($"Dashboard port: {dashboardPort}");
|
||||
@@ -174,8 +177,8 @@ public static class ApiBootstrap
|
||||
.Configure<SiloOptions>(options =>
|
||||
{
|
||||
// Configure silo address for multi-server clustering
|
||||
options.SiloName = $"ManagingApi-{taskSlot}";
|
||||
// Orleans will use the configured endpoints for clustering
|
||||
options.SiloName = $"ManagingApi-{taskSlot}-{siloRole}";
|
||||
Console.WriteLine($"Configuring silo with role: {siloRole}");
|
||||
});
|
||||
}
|
||||
else
|
||||
@@ -327,6 +330,10 @@ public static class ApiBootstrap
|
||||
siloBuilder
|
||||
.ConfigureServices(services =>
|
||||
{
|
||||
// Register custom placement directors for role-based placement
|
||||
services.AddPlacementDirector<ComputePlacementStrategy, ComputePlacementDirector>();
|
||||
services.AddPlacementDirector<TradingPlacementStrategy, TradingPlacementDirector>();
|
||||
|
||||
// Register existing services for Orleans DI
|
||||
// These will be available to grains through dependency injection
|
||||
services.AddTransient<IExchangeService, ExchangeService>();
|
||||
|
||||
Reference in New Issue
Block a user