我正在尝试使用现有的 Consul 集群作为测试 Orleans 应用程序的成员资格提供程序。
将我的客户端应用程序连接到 Silo 时出现此错误
在 Orleans.Runtime.Host.ConsulBasedMembershipTable 中找不到任何网关。奥尔良客户端无法初始化。
深入研究 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)。所以我假设我在初始化筒仓时遇到了问题 - 但我无法弄清楚它是什么!