gpt4 book ai didi

Azure服务总线: Maximum execution time of message processing

转载 作者:行者123 更新时间:2023-12-03 03:57:27 27 4
gpt4 key购买 nike

问题的简短形式:如果处理消息所花费的时间超过给定的限制,我们希望抛出异常。

较长形式的问题:我们有多个本地应用程序作为 Windows 服务运行,监听 Azure 服务总线订阅上的消息,以及写入 Azure Blob 存储等。

我们在服务总线或消息传递方面没有任何问题。服务总线 SDK 似乎运行良好。

问题出在我们的应用程序逻辑中,在收到消息后,我们对外部服务(例如 SQL Server)进行了大量调用。 Oracle DB、blob 存储、Web API。我们发现对 blob 存储的调用突然开始挂起,即什么都没有发生,并且这种情况同时发生在同一台计算机上的多个应用程序中。 症状是消息未得到处理。由于问题是对 blob 存储的调用由于某种原因没有响应,解决方案是在 blob 客户端上设置 MaximumExecutionTime。完成此操作后,我们会在指定的超时后收到 TaskCanceledException,而不是永远等待(直到应用程序重新启动)

我想知道是否可以在 SubsciptionClient 中设置最长执行时间。不是为了获取消息,而是为了我们处理消息。或者我们是否必须自己在回调(消息处理程序)中实现它。

最佳答案

您可以尝试设置OperationTimeout属性,指定消息传递操作在超时之前必须完成多长时间。

您可以使用如下代码更改超时:

MessagingFactorySettings settings = new MessagingFactorySettings { 
OperationTimeout = new TimeSpan(0, 2, 0),
TokenProvider = TokenProvider.CreateSharedSecretTokenProvider("issuer", "sharedkey") };

var address = ServiceBusEnvironment.CreateServiceUri("sb", "serviceNamespace", string.Empty);
var messagingFactory = MessagingFactory.Create(address, settings);

return messagingFactory.CreateSubscriptionClient("subName");

关于Azure服务总线: Maximum execution time of message processing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64023185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com