Я пытаюсь использовать существующий кластер Consul в качестве поставщика членства для тестового приложения Orleans.
Я получаю эту ошибку при подключении моего клиентского приложения к бункеру
Не удалось найти шлюз в Orleans.Runtime.Host.ConsulBasedMembershipTable. Клиент Orleans не может инициализироваться.
Копаясь в классе ConsulUtils, извлекаемые записи не имеют определенного ProxyPort - и отбрасываются - отсюда и пустой набор результатов.
Я инициализирую бункер следующим образом:
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 не установлен (т.е. равен 0) при сохранении записи. Итак, я предполагаю, что у меня возникла проблема при инициализации бункера, но я не могу понять, в чем она заключается!