2016-08-16 14 views
3

私は、クラスタ内の単一のStatelessサービスから複数のFabricTransportServiceRemotingListenersを公開したいと考えています。私は次のようにリスナーを登録しようとしました:単一サービス内の複数のFabricTransportServiceRemotingListeners

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners() 
    { 
     return new[] 
     { 
      new ServiceInstanceListener(
       serviceContext => 
        new FabricTransportServiceRemotingListener(serviceContext, new SqlCategoryCommandService(), new FabricTransportListenerSettings() 
        { 
         EndpointResourceName = "CategoryCommandEndpoint" 
        }), "SqlCategoryCommandService"), 

      new ServiceInstanceListener(
       serviceContext => 
        new FabricTransportServiceRemotingListener(serviceContext, new SqlCategoryQueryService(), new FabricTransportListenerSettings() 
        { 
         EndpointResourceName = "CategoryQueryEndpoint" 
        }), "SqlCategoryQueryService") 
     }; 
    } 

しかし、私は実装されていないインターフェイスメソッドに関するこの例外が最初と信じて私をリードスローされる2番目のリスナーによって実装されICategoryQueryServiceへのプロキシを作成するときリスナーがすべてのプロキシ呼び出しに誤って応答しています。

"Interface id '740213831' is not implemented by object 'TaxonomyService.SqlCategoryCommandService'" 

私は次のコードを使用してプロキシを作成しています:

var proxy = ServiceProxy. 
    Create<ICategoryQueryService>(new Uri("fabric:/Taxonomy/TaxonomyService")); 

は私が可能に説明してきたシナリオですか?

答えて

4

これは、別のユーザーによって正しく早く答えましたが、それはそう後世のために、何らかの理由でMODによって削除されました:

はいはこれが可能です。

var proxy = ServiceProxy.Create<ICategoryQueryService>(new Uri("fabric:/Taxonomy/TaxonomyService"), listenerName: "SqlCategoryQueryService"); 
+0

私は、同様の質問と複数のリスナーとの混乱を見たことがあります。サービスプロキシを作成するときには、リスナー名を指定する必要があります。オプションの名前ではなく必須の名前を付ける方が理にかなっていますか? – CrnaStena

+0

私は複数のリスナーを持っています - WcfCommunicationListenerとSFのデフォルトです。私はデフォルト(Wcfではなく)でサービスを見つけようとしていますが、メソッドを呼び出すと、Wcfによってサービスを検索しようとしているかのようにWcfからエラーが返されます。 – alltej

+0

私は、この複数のリスナーを動作させることができないです:利回りリターン 新しいServiceReplicaListener(コンテキスト=>新しいFabricTransportServiceRemotingListener(コンテキスト、この)、 「ReadWriteCommunicationListener」);収量リターン 新しいServiceReplicaListener(コンテキスト=>新しいFabricTransportServiceRemotingListener(コンテキスト、この)、 "ReadOnlyCommunicationListener"); – alltej

関連する問題