1

テスト Orleans アプリケーションのメンバーシップ プロバイダーとして、既存の Consul クラスターを使用しようとしています。

クライアント アプリを Silo に接続すると、このエラーが発生します

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 である) ことがわかります。したがって、サイロを初期化するときに問題があると想定していますが、それが何であるかわかりません!

4

1 に答える 1

1

深く掘り下げないと、バグのように聞こえます。GitHub に再投稿してください。

于 2016-10-30T00:20:08.283 に答える