我希望能够从群集中的单个无状态服务中公开多个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")
};
}
但是,当我对第二个侦听器实现的ICategoryQueryService
进行代理时,抛出了关于未实现的接口方法的异常,这使我认为第一个侦听器错误地响应了所有代理调用。
"Interface id '740213831' is not implemented by object 'TaxonomyService.SqlCategoryCommandService'"
我使用以下代码创建代理:
var proxy = ServiceProxy.
Create<ICategoryQueryService>(new Uri("fabric:/Taxonomy/TaxonomyService"));
我所描述的情景是否可能?
答案 0 :(得分:4)
其他用户之前已经正确回答了这个问题,但无论出于何种原因,它都被mod删除了,所以对后人来说:
是这是可能的。您只需在创建服务代理时指定侦听器名称:
var proxy = ServiceProxy.Create<ICategoryQueryService>(new Uri("fabric:/Taxonomy/TaxonomyService"), listenerName: "SqlCategoryQueryService");