Что произойдет после последней попытки с опциями повтора в долговременных функциях? - PullRequest
0 голосов
/ 07 февраля 2019

Я использую долговременную функцию, которая срабатывает из очереди.Я отправляю сообщения из очереди в довольно ненадежную службу, поэтому я настроил RetryPolicy.Тем не менее, я хотел бы видеть сообщения об ошибках , даже если максимальное количество попыток исчерпано.

Нужно ли вручную выбрасывать их в очередь недоставленных сообщений (и если да, то мне непонятно, откуда я знаю, что сообщение было повторено сколько угодно раз), или функция естественным образом выбрасывает их в какую-нибудь очередь недоставленных сообщений / ядов?

1 Ответ

0 голосов
/ 07 февраля 2019

Когда в Durable Functions происходит сбой действия, исключение направляется обратно в оркестровку с использованием FunctionFailedException.Неважно, использовали ли вы автоматическую повторную попытку или нет - в самом конце вся деятельность заканчивается неудачей, и вам решать ситуацию.Согласно документации:

try
{
    await context.CallActivityAsync("CreditAccount",
        new
        {
            Account = transferDetails.DestinationAccount,
            Amount = transferDetails.Amount
        });
}
catch (Exception)
{
    // Refund the source account.
    // Another try/catch could be used here based on the needs of the application.
    await context.CallActivityAsync("CreditAccount",
        new
        {
            Account = transferDetails.SourceAccount,
            Amount = transferDetails.Amount
        });
}

Единственное, что нужно сделать при повторных попытках, - это обработать временную ошибку (поэтому вам не нужно включать безопасный маршрут каждый раз, когда у вас возникают, например, проблемы с сетью).

...