Я использую веб-активность для отправки уведомлений о запуске конвейера в командах MS. Мое требование — использовать минимальное количество веб-действий для снижения затрат. В то же время я хочу получать уведомления в случае сбоя какого-либо действия. Пожалуйста, предложите идеальное соединение с учетом вышеуказанного требования.
Я хочу использовать как можно меньшее количество действий для отправки уведомлений. Я попытался подключиться, используя только одно веб-действие, но это не удалось.
Это будет сложная задача, требующая множества действий по отправке сообщения о любом сбое активности в конвейере.
Для этого требования можно использовать действие конвейера выполнения. Но для этого требуется еще один родительский конвейер. Удалите веб-действия, поместите все необходимые действия в конвейер и вызовите этот конвейер из другого конвейера (родительского).
Здесь при сбое любого действия в дочернем конвейере действие «Выполнение конвейера» завершится неудачно, и оно содержит информацию о сообщении об ошибке и имени действия.
Следуйте приведенной ниже демонстрации для лучшего понимания:
В качестве примера я взял несколько действий с заданными переменными в дочернем конвейере и намеренно сгенерировал ошибку.
Теперь в родительском конвейере вызовите этот конвейер с помощью действия «Выполнение конвейера» и убедитесь, что вы установили флажок «Ожидать завершения».
По завершении конвейера выполнения я добавил действие установки переменной с переменной Chat_message
. Это выражение для получения сообщения в чате.
@if (equals(activity('Execute Pipeline1').status,'Succeeded'),'The pipeline succeeded',concat('The pipeline failed. The activity name is : ',substring(activity('Execute Pipeline1').error.message, add(indexOf(activity('Execute Pipeline1').error.message,'target'),7), sub(sub(indexOf(activity('Execute Pipeline1').error.message,'failed'),1),add(indexOf(activity('Execute Pipeline1').error.message,'target'),7))),' and the Error message is : ',split(activity('Execute Pipeline1').Error.message,'failed: ')[1]))
При сбое любого действия дочернего конвейера происходит сбой всего конвейера, а также происходит сбой действия «Выполнение конвейера» в родительском конвейере.
Теперь, по завершении этого действия, приведенное выше выражение проверит, является ли конвейер неудачным или успешным, и выдаст сообщение в соответствии со статусом.
**Сообщение при сбое дочернего конвейера: **
**Сообщение об успешном завершении конвейера: **
Поскольку вы хотите отправить это сообщение своей команде, замените заданную переменную Activity в родительском конвейере своей веб-активностью и вместо сообщения чата добавьте приведенное выше выражение. Независимо от того, является ли конвейер неудачным или успешным, для отправки сообщения он использует только одно веб-действие.
Один из способов, как заявил Ракеш, — использовать активность конвейера выполнения, но это означает управление дополнительным конвейером. Вы также можете управлять, добавляя зависимости в форме завершения, пропускать и проверять статус всех действий, а также получать список всех сообщений об ошибках, если таковые имеются, и отправлять общее уведомление по электронной почте.
в моем блоге ниже представлена подробная основа для этого: https://datasharkx.wordpress.com/2021/08/19/error-logging-and-the-art-of-avoiding-redundant-activities-in-azure-data-factory/