如何增加Azure Service Fabric Actor的超时?

问题描述 投票:1回答:3

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

Actor.Microsoft.ServiceFabric.Actors.Runtime.ActorConcurrencyLock多次获得相同的请求。这可能发生在请求上,当客户端在TimeoutException上重试时,该请求比客户端上配置的OperationTimeout需要更多的处理时间。

我没有看到任何可以配置此值的地方。我在the documentation for the FabricTransportSettings class看到它的引用,但我不知道该类型的使用位置。

由于我们的actor方法需要一段时间才能运行(通常是几分钟),如果此错误确实与超时有关,我该如何增加OperationTimeout?

azure azure-service-fabric
3个回答
3
投票

我会考虑改变actor的工作方式,初始化并使用所需参数“播种”actor。然后触发计时器以执行长时间运行的工作。然后重新查询actor直到工作完成并检索结果。

我们有一些长时间运行的工作负载,使用我们系统中的actor,我们设置为以这种方式工作


2
投票

您可以在装配级别设置超时值。

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

0
投票

也许您应该考虑将以下部分放入Settings.xml文件中:

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

资料来源:https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-actors-fabrictransportsettings

© www.soinside.com 2019 - 2024. All rights reserved.