2016-09-14 4 views
0

Я новичок в приложениях Azure Logic, поэтому этот пример может показаться не таким полезным, но его просто изучить некоторые основные Azure Logic.Azure Logic App HTTP-запрос 500

У меня есть простой HTTP-прослушиватель (когда HTTP-запрос получен) Чем он должен отправить другой HTTP-запрос GET на какую-то службу и отправить ответ первому абоненту. Это выглядит следующим образом: http://imgur.com/a/9fpfu

Теперь все работает замечательно, пока я не посылать неправильные данные или как-то логика приложения получают сообщение об ошибке 500 HTTP из HTTP запросов.

Чем работает приложение Logic в HTTP-запросе около 1 минуты и не удается. Ответ после этого никогда не отправляется.

Как я могу перенаправить ответ, что приложение Logic возвращается к запрашивающему, который запросил логическое приложение?

ответ

0

Как вы знаете, 500 является чем-то неизвестной ошибкой, и, следовательно, механизм logicapp останавливает обработку любых действий, которые продолжают бросать 500 даже после повторной попытки. В этом конкретном случае вам нужно установить правило диагностики логического диска «Действия с ошибкой»/«Выполняется сбой». В правиле вы можете настроить отправку электронной почты и/настроить webhook, чтобы реагировать на событие

+0

Когда я добавить еще один ответ ничего не меняется, и мой код работает для 4xx ошибок, но не для 5xx ... – onefox

+0

As вы знаете, что 500 - это что-то неизвестное, и, следовательно, движок logicapp перестает обрабатывать любые действия, которые продолжают бросать 500 даже после повторной попытки. В этом конкретном случае вам нужно установить правило диагностики логического диска «Действия с ошибкой»/«Выполняется сбой». В правиле вы можете настроить отправку электронной почты и/настроить webhook, чтобы реагировать на событие. – TusharJ

0

Логические приложения будут по умолчанию повторять любой неудачный запрос 4 раза, поэтому вы увидите увеличенное время выполнения, когда служба http возвращает ошибку 5xx. Вы можете настроить это поведение с помощью пользовательской политики повтора. См. Больше https://azure.microsoft.com/en-us/updates/customizable-retry-policies-in-logic-apps/

По умолчанию шаги приложения Logic зависят от успеха любых зависимых действий. Это приводит к тому, что действие с ответом будет пропущено, когда действие HTTP не удастся.

У вас есть несколько вариантов, чтобы решить эту проблему:

  1. В представлении кода, вы можете обновить runAfter свойства так, что действие выполняется независимо от того, удалось действие HTTP или не

    "runAfter": { "Condition": [ "Succeeded", "Failed" ] } 
    
  2. Добавить состояние в свои приложения для работы с логикой в ​​код статуса http действия http, а затем назначить специальное действие Response для каждого случая

+0

Вы имеете в виду [link] (https://msdn.microsoft.com/library/azure/mt643939.aspx) справа. При попытке добавить retryPolicy возникает следующая ошибка: Не удалось найти элемент 'retryPolicy' объекта типа 'FlowTemplateAction'. Path 'properties.definition.actions.HTTP.retryPolicy», Это мой код (условие уже к Преемник и Failed): http://pastebin.com/igfprKFT Также для 4xx ошибок он отлично работает, и только для 5xx это занимает 1мин тайм-аута. http://imgur.com/a/0nBPK После таймаута ответ не срабатывает – onefox

+0

Похоже, вы указываете retryPolicy непосредственно под действием. Он должен находиться под свойством ввода. Что касается сбоев, Logic Apps только повторяет прерывистые сбои (так что коды состояния 5xx), коды статуса 4xx рассматриваются как детерминированные сбои, поэтому их не повторить. –

0

Вы можете обновить политику повтора и настройки тайм-аута действия Http как

enter image description here

+0

Пожалуйста, добавьте описание изображения, которое вы связали. – CXJ