Azure 远程处理时服务结构上的重复请求
我在服务结构(ASP.NET Core)上有一个无状态服务,它将调用一个参与者,参与者也可以根据场景在内部调用其他参与者和/或有状态服务 我的问题是,我们是否需要考虑由于系统的远程处理方面而产生的重复请求 在我们早期的Akka.Net实现中,由于TCP/IP网络拥塞等原因,参与者有可能收到重复的请求,我们通过给每条消息一个唯一的关联Id来处理。我们将在参与者上以状态存储请求及其结果,如果相同的关联Id再次返回,我们只会假设它是一个副本,并发送较早的结果,而不是重新处理请求 我曾在微软的一个示例项目中看到过类似的方法,但我似乎再也找不到了(Github上的死链接) 有人知道这是否需要在Actor和/或Stateful服务中处理吗?您可以通过创建Azure 远程处理时服务结构上的重复请求,azure,azure-service-fabric,service-fabric-actor,Azure,Azure Service Fabric,Service Fabric Actor,我在服务结构(ASP.NET Core)上有一个无状态服务,它将调用一个参与者,参与者也可以根据场景在内部调用其他参与者和/或有状态服务 我的问题是,我们是否需要考虑由于系统的远程处理方面而产生的重复请求 在我们早期的Akka.Net实现中,由于TCP/IP网络拥塞等原因,参与者有可能收到重复的请求,我们通过给每条消息一个唯一的关联Id来处理。我们将在参与者上以状态存储请求及其结果,如果相同的关联Id再次返回,我们只会假设它是一个副本,并发送较早的结果,而不是重新处理请求 我曾在微软的一个示例项
IServiceRemotingClientFactory
和IServiceRemotingClient
的自定义实现来添加远程处理调用
在操作RequestResponseAsync
和SendOneWay
中添加自定义头
彼得·邦斯的另一个例子:
在接收端,您可以从自定义
ActorServiceRemotingDispatcher
中的IServiceRemotingRequestMessageHeader
获取自定义头。这是一种非常有趣的方法。我会检查一下,如果有任何问题,我会回复你。非常感谢。
var header = requestRequestMessage.GetHeader();
var customHeaders = customHeadersProvider.Invoke() ?? new CustomHeaders();
header.AddHeader(CustomHeaders.CustomHeader, customHeaders.Serialize());