如何增加Azure服务结构参与者的超时?

如何增加Azure服务结构参与者的超时?,azure,azure-service-fabric,Azure,Azure Service Fabric,我在错误日志中发现,Azure Service Fabric无状态服务在一段时间后试图调用Actor代理上的方法时遇到了Microsoft.ServiceFabric.Actors.Runtime.DuplicateMessageException。演员可能需要一段时间才能跑完。异常的完整消息是: 已获取Actor Microsoft.ServiceFabric.Actors.Runtime.ActorConcurrencyLock 同一请求不止一次。这可能发生在以下情况的请求中: 花费的处理时

我在错误日志中发现,Azure Service Fabric无状态服务在一段时间后试图调用Actor代理上的方法时遇到了Microsoft.ServiceFabric.Actors.Runtime.DuplicateMessageException。演员可能需要一段时间才能跑完。异常的完整消息是:

已获取Actor Microsoft.ServiceFabric.Actors.Runtime.ActorConcurrencyLock 同一请求不止一次。这可能发生在以下情况的请求中: 花费的处理时间比上配置的OperationTimeout要多 客户端作为客户端在TimeoutException上重试

我看不到任何可以配置此值的地方。我在中看到对它的引用,但我不知道在哪里使用该类型


由于我们的Actudio方法需要花费一段时间来运行(通常是分钟),如果这个错误确实与超时有关,我如何增加操作超时?< /P> < P>我会考虑改变演员的工作方式,让你初始化并用所需的参数“播种”演员。然后启动计时器以执行长时间运行的工作。然后重新查询参与者,直到工作完成并检索结果


我们有两个长时间运行的工作负载,使用我们的系统中的演员,我们设置为这样工作:

< P>我会考虑改变演员的工作方式,让你用所需的参数初始化和“播种”演员。然后启动计时器以执行长时间运行的工作。然后重新查询参与者,直到工作完成并检索结果


在我们的系统中,我们有几个使用参与者的长时间运行的工作负载,我们将其设置为以这种方式工作

您可以在程序集级别设置超时值

using Microsoft.ServiceFabric.Services.Remoting.FabricTransport;
[assembly: FabricTransportServiceRemotingProvider(MaxMessageSize = int.MaxValue,OperationTimeoutInSeconds =2000)]

可以在程序集级别设置超时值

using Microsoft.ServiceFabric.Services.Remoting.FabricTransport;
[assembly: FabricTransportServiceRemotingProvider(MaxMessageSize = int.MaxValue,OperationTimeoutInSeconds =2000)]

也许你应该考虑把下面的部分放进你的Stutest.xml文件:

<Section Name="TransportSettings">
    <Parameter Name="MaxMessageSize" Value="1073741824" />
    <Parameter Name="OperationTimeoutInSeconds" Value="6000" />
</Section>


来源:

也许你应该考虑把下面的部分放进你的Stutest.xml文件:

<Section Name="TransportSettings">
    <Parameter Name="MaxMessageSize" Value="1073741824" />
    <Parameter Name="OperationTimeoutInSeconds" Value="6000" />
</Section>


来源:

从架构的角度来看,我认为这是一个很好的建议,我一定会尝试一下。不幸的是,虽然它没有真正回答这个问题,所以我不能把它标记为一个答案。是否可以增加超时,如果可以,如何增加超时?公平地说,我确实记得有一次读到一篇文章说,要更改FabricTransportSettings,必须在线路的两端(请求者和接收端的侦听器)进行更改,我最近也遇到了这个问题。我接受了不增加超时的建议,而是启动了一个actor,为长时间运行的任务设置了一个计时器,然后使用基于actor的事件,这些事件可以从调用服务订阅,以接收工作完成时的通知。你可以阅读更多关于演员活动的内容@。我认为从架构的角度来看,这是一个很好的建议,我一定会尝试一下。不幸的是,虽然它没有真正回答这个问题,所以我不能把它标记为一个答案。是否可以增加超时,如果可以,如何增加超时?公平地说,我确实记得有一次读到一篇文章说,要更改FabricTransportSettings,必须在线路的两端(请求者和接收端的侦听器)进行更改,我最近也遇到了这个问题。我接受了不增加超时的建议,而是启动了一个actor,为长时间运行的任务设置了一个计时器,然后使用基于actor的事件,这些事件可以从调用服务订阅,以接收工作完成时的通知。您可以阅读有关演员活动@的更多信息。