Я пытаюсь использовать существующий кластер Consul в качестве поставщика членства для тестового приложения Orleans.Попытка установить членство в кластере Orleans с Consul
Я получаю эту ошибку при подключении моего клиента приложение к Силос
Не удалось найти шлюз в Orleans.Runtime.Host.ConsulBasedMembershipTable. Клиент Orleans не может инициализировать.
Копаясь в классе ConsulUtils, получаемые записи не имеют определенных прокси-портов и отбрасываются - следовательно, пустой набор результатов.
Я инициализировать силос так:
var clusterConfiguration = new ClusterConfiguration();
clusterConfiguration.Globals.DataConnectionString = "http://localhost:8500";
clusterConfiguration.Globals.DeploymentId = "OrleansPlayground";
clusterConfiguration.Globals.LivenessType = GlobalConfiguration.LivenessProviderType.Custom;
clusterConfiguration.Globals.MembershipTableAssembly = "OrleansConsulUtils";
clusterConfiguration.Globals.ReminderServiceType = GlobalConfiguration.ReminderServiceProviderType.Disabled;
var silohost = new SiloHost("Fred", clusterConfiguration);
silohost.InitializeOrleansSilo();
startup = Task.Factory.StartNew(() =>
{
return silohost.StartOrleansSilo();
});
return true;
И я могу установить клиента приложение вверх, как это:
var config = new ClientConfiguration();
config.CustomGatewayProviderAssemblyName = "OrleansConsulUtils";
config.DataConnectionString = "http://localhost:8500";
config.DeploymentId = "OrleansPlayground";
config.GatewayProvider = ClientConfiguration.GatewayProviderType.Custom;
GrainClient.Initialize(config);
Глядя на код в ConsulUtils я могу видеть, что ProxyPort не set (т.е. равно 0), когда запись сохраняется. Поэтому я предполагаю, что у меня есть проблема при инициализации бункера, но я не могу понять, что это такое!
Спасибо! Я добавил его как проблему - https://github.com/dotnet/orleans/issues/2370 –