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"));
は私が可能に説明してきたシナリオですか?
私は、同様の質問と複数のリスナーとの混乱を見たことがあります。サービスプロキシを作成するときには、リスナー名を指定する必要があります。オプションの名前ではなく必須の名前を付ける方が理にかなっていますか? – CrnaStena
私は複数のリスナーを持っています - WcfCommunicationListenerとSFのデフォルトです。私はデフォルト(Wcfではなく)でサービスを見つけようとしていますが、メソッドを呼び出すと、Wcfによってサービスを検索しようとしているかのようにWcfからエラーが返されます。 – alltej
私は、この複数のリスナーを動作させることができないです:利回りリターン 新しいServiceReplicaListener(コンテキスト=>新しいFabricTransportServiceRemotingListener(コンテキスト、この)、 「ReadWriteCommunicationListener」);収量リターン 新しいServiceReplicaListener(コンテキスト=>新しいFabricTransportServiceRemotingListener(コンテキスト、この)、 "ReadOnlyCommunicationListener"); – alltej