Новая обработка ошибок Mule — одно из самых больших и значительных изменений, сделанных в Mule 4. Новая обработка ошибок может показаться сложной, но она лучше и эффективнее. В этой главе мы собираемся обсудить компоненты ошибок Mule, типы ошибок, категории ошибок Mule и компоненты для обработки ошибок Mule.
Компоненты ошибки Mule
Ошибка Mule является результатом ошибки исключения Mule имеет следующие компоненты —
Описание
Это важный компонент ошибки Mule, который даст описание проблемы. Его выражение таково —
#[error.description]
Тип
Компонент Type ошибки Mule используется для характеристики проблемы. Это также позволяет маршрутизацию в обработчике ошибок. Его выражение таково —
#[error.errorType]
причина
Компонент Cause ошибки Mule дает базовый java-метод, который вызывает сбой. Его выражение таково —
#[error.cause]
Сообщение
Компонент Message ошибки Mule показывает необязательное сообщение об ошибке. Его выражение таково —
#[error.errorMessage]
Ошибки ребенка
Компонент Child Errors ошибки Mule дает необязательный набор внутренних ошибок. Эти внутренние ошибки в основном используются такими элементами, как Scatter-Gather, для предоставления агрегированных ошибок маршрута. Его выражение таково —
#[error.childErrors]
пример
В случае сбоя HTTP-запроса с кодом состояния 401, ошибки Mule следующие:
Description: HTTP GET on resource ‘http://localhost:8181/TestApp’ failed: unauthorized (401) Type: HTTP:UNAUTHORIZED Cause: a ResponseValidatorTypedException instance Error Message: { "message" : "Could not authorize the user." }
S.No | Тип ошибки и описание |
---|---|
1 |
ПРЕОБРАЗОВАНИЯ Этот тип ошибки указывает на ошибку, возникшую при преобразовании значения. Преобразование — это внутреннее преобразование Mule Runtime, а не преобразование DataWeave. |
2 |
ЭКСПРЕССИЯ Этот тип типа ошибки указывает на ошибку, возникшую при оценке выражения. |
3 |
ПРОВЕРКА Этот тип Тип ошибки указывает на ошибку проверки. |
4 |
DUPLICATE_MESSAGE Некоторая ошибка проверки, которая возникает, когда сообщение обрабатывается дважды. |
5 |
REDELIVERY_EXHAUSTED Этот тип типа ошибки возникает, когда максимальное количество попыток повторной обработки сообщения из источника исчерпано. |
6 |
СОЕДИНЕНИЯ Этот тип ошибки указывает на проблему при установлении соединения. |
7 |
МАРШРУТ Этот тип ошибки указывает на ошибку, возникшую при маршрутизации сообщения. |
8 |
БЕЗОПАСНОСТЬ Этот тип ошибки указывает на ошибку безопасности. Например, получены неверные учетные данные. |
9 |
STREAM_MAXIMUM_SIZE_EXCEEDED Этот тип ошибки возникает, когда максимально допустимый размер потока исчерпан. |
10 |
АУТ Указывает время ожидания при обработке сообщения. |
11 |
НЕИЗВЕСТНЫЙ Этот тип ошибки указывает на непредвиденную ошибку. |
12 |
ИСТОЧНИК Он представляет возникновение ошибки в источнике потока. |
13 |
SOURCE_RESPONSE Он представляет возникновение ошибки в источнике потока при обработке успешного ответа. |
ПРЕОБРАЗОВАНИЯ
Этот тип ошибки указывает на ошибку, возникшую при преобразовании значения. Преобразование — это внутреннее преобразование Mule Runtime, а не преобразование DataWeave.
ЭКСПРЕССИЯ
Этот тип типа ошибки указывает на ошибку, возникшую при оценке выражения.
ПРОВЕРКА
Этот тип Тип ошибки указывает на ошибку проверки.
DUPLICATE_MESSAGE
Некоторая ошибка проверки, которая возникает, когда сообщение обрабатывается дважды.
REDELIVERY_EXHAUSTED
Этот тип типа ошибки возникает, когда максимальное количество попыток повторной обработки сообщения из источника исчерпано.
СОЕДИНЕНИЯ
Этот тип ошибки указывает на проблему при установлении соединения.
МАРШРУТ
Этот тип ошибки указывает на ошибку, возникшую при маршрутизации сообщения.
БЕЗОПАСНОСТЬ
Этот тип ошибки указывает на ошибку безопасности. Например, получены неверные учетные данные.
STREAM_MAXIMUM_SIZE_EXCEEDED
Этот тип ошибки возникает, когда максимально допустимый размер потока исчерпан.
АУТ
Указывает время ожидания при обработке сообщения.
НЕИЗВЕСТНЫЙ
Этот тип ошибки указывает на непредвиденную ошибку.
ИСТОЧНИК
Он представляет возникновение ошибки в источнике потока.
SOURCE_RESPONSE
Он представляет возникновение ошибки в источнике потока при обработке успешного ответа.
В приведенном выше примере вы можете увидеть компонент сообщения об ошибке mule.
Типы ошибок
Давайте разберемся с типами ошибок с помощью их характеристик —
-
Первыми характеристиками Mule Error Types является то, что он состоит из пространства имен и идентификатора . Это позволяет нам различать типы в зависимости от их домена. В приведенном выше примере тип ошибки HTTP: UNAUTHORIZED .
-
Вторая и важная характеристика заключается в том, что тип ошибки может иметь родительский тип. Например, тип ошибки HTTP: UNAUTHORIZED имеет MULE: CLIENT_SECURITY в качестве родителя, который, в свою очередь, также имеет родителя с именем MULE: SECURITY . Эта характеристика устанавливает тип ошибки как спецификацию более глобального элемента.
Первыми характеристиками Mule Error Types является то, что он состоит из пространства имен и идентификатора . Это позволяет нам различать типы в зависимости от их домена. В приведенном выше примере тип ошибки HTTP: UNAUTHORIZED .
Вторая и важная характеристика заключается в том, что тип ошибки может иметь родительский тип. Например, тип ошибки HTTP: UNAUTHORIZED имеет MULE: CLIENT_SECURITY в качестве родителя, который, в свою очередь, также имеет родителя с именем MULE: SECURITY . Эта характеристика устанавливает тип ошибки как спецификацию более глобального элемента.
Виды типов ошибок
Ниже приведены категории, в которые попадают все ошибки:
ЛЮБОЙ
Ошибки в этой категории — это ошибки, которые могут возникнуть в потоке. Они не так серьезны и могут быть легко обработаны.
КРИТИЧЕСКИЕ
Ошибки в этой категории являются серьезными ошибками, которые не могут быть обработаны. Ниже приведен список типов ошибок в этой категории —
S.No | Тип ошибки и описание |
---|---|
1 |
ПЕРЕГРУЗКИ Этот тип ошибки указывает на ошибку, возникшую из-за проблемы перегрузки. В этом случае исполнение будет отклонено. |
2 |
FATAL_JVM_ERROR Этот тип Тип ошибки указывает на возникновение фатальной ошибки. Например, переполнение стека. |
ПЕРЕГРУЗКИ
Этот тип ошибки указывает на ошибку, возникшую из-за проблемы перегрузки. В этом случае исполнение будет отклонено.
FATAL_JVM_ERROR
Этот тип Тип ошибки указывает на возникновение фатальной ошибки. Например, переполнение стека.
ТАМОЖЕННЫЙ тип ошибки
Типы ошибок CUSTOM — это ошибки, которые мы определили. Они могут быть определены при отображении или при возникновении ошибок. Мы должны предоставить определенное пользовательское пространство имен для этих типов ошибок, чтобы отличать их от других существующих типов ошибок в приложении Mule. Например, в приложении Mule, использующем HTTP, мы не можем использовать HTTP в качестве настраиваемого типа ошибки.
Категории ошибки Mule
В широком смысле ошибки в Mule можно разделить на две категории, а именно: ошибки обмена сообщениями и системные ошибки .
Ошибка обмена сообщениями
Эта категория ошибок Мула связана с потоком Мула. Всякий раз, когда возникает проблема в потоке Mule, Mule выдает ошибку обмена сообщениями. Мы можем настроить компонент On Error внутри компонента обработчика ошибок для обработки этих ошибок Mule.
Системная ошибка
Системная ошибка указывает на исключение, происходящее на системном уровне. Если событие Mule отсутствует, системная ошибка обрабатывается системным обработчиком ошибок. Следующие виды исключений обрабатываются системным обработчиком ошибок —
-
Исключение, возникающее при запуске приложения.
-
Исключение, возникающее при сбое подключения к внешней системе.
Исключение, возникающее при запуске приложения.
Исключение, возникающее при сбое подключения к внешней системе.
В случае системной ошибки Mule отправляет уведомление об ошибке зарегистрированным слушателям. Это также регистрирует ошибку. С другой стороны, Mule выполняет стратегию переподключения, если ошибка была вызвана ошибкой соединения.
Обработка ошибок мула
Мул имеет следующие два обработчика ошибок для обработки ошибок —
Обработчики ошибок при ошибках
Первым обработчиком ошибок Mule является компонент On-Error, который определяет типы ошибок, которые они могут обрабатывать. Как обсуждалось ранее, мы можем настроить компоненты On-Error внутри подобного области видимости компонента Error Handler. Каждый поток Mule содержит только один обработчик ошибок, но этот обработчик ошибок может содержать столько областей действия On-Error, сколько нам нужно. Шаги для обработки ошибки Mule в потоке с помощью компонента On-Error следующие:
-
Во-первых, всякий раз, когда поток Мула вызывает ошибку, нормальное выполнение потока останавливается.
-
Затем процесс будет передан компоненту «Обработчик ошибок», в котором уже есть компонент «При ошибке» для соответствия типам ошибок и выражениям.
-
Наконец, компонент «Обработчик ошибок» направляет ошибку в первую область « При ошибке», которая соответствует этой ошибке.
Во-первых, всякий раз, когда поток Мула вызывает ошибку, нормальное выполнение потока останавливается.
Затем процесс будет передан компоненту «Обработчик ошибок», в котором уже есть компонент «При ошибке» для соответствия типам ошибок и выражениям.
Наконец, компонент «Обработчик ошибок» направляет ошибку в первую область « При ошибке», которая соответствует этой ошибке.
Ниже приведены два типа компонентов On-Error, поддерживаемых Mule:
Распространение по ошибке
Компонент распространения по ошибке выполняется, но распространяет ошибку на следующий уровень и прерывает выполнение владельца. Транзакция будет отменена, если она будет обработана компонентом Распространение ошибки .
При ошибке продолжить
Как и компонент распространения по ошибке, компонент продолжения по ошибке также выполняет транзакцию. Единственное условие: если владелец успешно завершил выполнение, тогда этот компонент будет использовать результат выполнения как результат своего владельца. Транзакция будет зафиксирована, если она обрабатывается компонентом On-Error Continue.
Попробуйте Scope Component
Try Scope — одна из многих новых функций, доступных в Mule 4. Он работает аналогично блоку try JAVA, в котором мы использовали код, имеющий возможность быть исключением, чтобы его можно было обрабатывать, не нарушая весь код.
Мы можем обернуть один или несколько обработчиков событий Mule в Try Scope, а затем, try scope будет перехватывать и обрабатывать любые исключения, сгенерированные этими обработчиками событий. Основная работа try scope вращается вокруг собственной стратегии обработки ошибок, которая поддерживает обработку ошибок на своем внутреннем компоненте, а не на всем потоке. Вот почему нам не нужно выделять поток в отдельный поток.
пример
Ниже приведен пример использования try scope —
Настройка области действия try для обработки транзакций
Как мы знаем, транзакция представляет собой серию действий, которые никогда не должны выполняться частично. Все операции в рамках транзакции выполняются в одном и том же потоке, и если происходит ошибка, это должно привести к откату или фиксации. Мы можем настроить область действия следующим образом, чтобы она воспринимала дочерние операции как транзакцию.
INDIFFERENT [по умолчанию] — если мы выберем эту конфигурацию в блоке try, дочерние действия не будут рассматриваться как транзакция. В этом случае ошибка не вызывает ни отката, ни фиксации.
ALWAYS_BEGIN — указывает, что новая транзакция будет запускаться при каждом выполнении области.
BEGIN_OR_JOIN — указывает, что, если текущая обработка потока уже начала транзакцию, присоединитесь к ней. В противном случае начните новый.