Код: Выделить всё
RunOperation encountered an exception and will retry.
Exception: Azure.Messaging.ServiceBus.ServiceBusException: The operation is canceled because the owner is being closed. (ServiceTimeout).
For troubleshooting information, see https://aka.ms/azsdk/net/servicebus/exceptions/troubleshoot.
< /code>
Несколько вскоре после начала появления этих сообщений я в конце концов вижу: < /p>
sometopic/Subscriptions/somesubscription -c7171034-1247-4980-8037-ca0043c66968-Receiver: RenewLockAsync
Exception: Azure.Messaging.ServiceBus.ServiceBusException: The operation is canceled because the owner is being closed. (ServiceTimeout).
For troubleshooting information, see https://aka.ms/azsdk/net/servicebus/exceptions/troubleshoot.
Код: Выделить всё
public class LockRenewalTestFunction(ILogger logger) {
[Function(nameof(LockRenewalTestFunction))]
public async Task Run([ServiceBusTrigger("sometopic", "somesubscription", Connection = "ServiceBusConnection",
IsBatched = false, IsSessionsEnabled = false, AutoCompleteMessages = true)]
ServiceBusReceivedMessage message, ServiceBusMessageActions messageActions, CancellationToken cancellationToken) {
var doWorkTask = Task.Run(async () => {
logger.LogInformation("---------------\nRunning 2 minute task");
await Task.Delay(TimeSpan.FromMinutes(2), cancellationToken);
}, cancellationToken);
await doWorkTask;
logger.LogInformation("Finished 2 minute task");
}
}
< /code>
host.json
{
"version": "2.0",
"extensions": {
"serviceBus": {
"clientRetryOptions": {
"mode": "exponential",
"tryTimeout": "00:01:00",
"delay": "00:00:00.80",
"maxDelay": "00:01:00",
"maxRetries": 3
},
"prefetchCount": 1,
"messageHandlerOptions": {
"autoComplete": false,
"maxConcurrentCalls": 1
},
"sessionHandlerOptions": {
"autoComplete": false,
"maxConcurrentSessions": 1
},
"batchOptions": {
"maxMessageCount": 1,
"autoComplete": false
}
}
},
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
},
"enableLiveMetricsFilters": true
},
"logLevel": {
"default": "Information",
"Program": "Trace",
"Microsoft.AspNetCore": "Information",
"Microsoft.Extensions": "Warning",
"System.Net.Http": "Warning"
}
}
}
Тайм -ауты шлюза обычно являются временными ошибками, и механизм повторения в нормальных обстоятельствах будет восстанавливаться, однако этот не будет, что механизм повторного периода, связанный с 30 вторым временем, вызовет функцию дольше, чем 1 -минутное время блокировки. Конечно, я могу установить замок на 5 минут, и я был бы в порядке, но я хочу использовать и понять процесс обновления. < /P>
Что я делаю не так с обновлением? У меня всегда есть решение для проблемы с плохими шлюзами, которую я вызвал, и отправлял отчет об ошибке поставщику, с которым я работаю, но я смотрю на это с будущей точки зрения. Я хотел бы иметь возможность надежно справляться с ситуациями, когда процесс может работать дольше, чем ожидалось. API, с которым я работаю, может иметь сетевой всплеск, который мог бы длиться минуту или две во время обработки, потому что что-то, что обычно не затрагивает времени.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... ot-working
Мобильная версия