32 lines
2.8 KiB
Plaintext
32 lines
2.8 KiB
Plaintext
|
= Использование обработчика ошибок
|
|||
|
|
|||
|
Для централизованной обработки ошибок будем использовать “процессор” зарегистрированный через _<camelContext errorHandlerRef="...”>_. В частных случаях допустимо использование _try … catch … finally_.
|
|||
|
_(https://camel.apache.org/manual/latest/error-handler.html)_
|
|||
|
|
|||
|
Кроме возврата ошибок вызывающей стороне, необходимо дублировать ошибки в JMS очередь с возможностью их просмотра из веб-консоли Артемиса.
|
|||
|
|
|||
|
=== Классификация ошибок
|
|||
|
|
|||
|
_Бизнесовые ошибки:_ отсутствие обязательных полей, превышение длины поля и другие нарушения ожиданий принимающей стороны.
|
|||
|
|
|||
|
_Серверные ошибки:_ NPE и другие ошибки времени выполнения.
|
|||
|
|
|||
|
_Сервис не доступен:_ конечная точка не отвечает и не принимает входящие соединения.
|
|||
|
|
|||
|
При этом ошибки могут быть “восстанавливаемыми” - с возможностью успешной обработки повторного запроса, использующего изменённые данные или другие точки доступа, и “не восстанавливаемыми” - у клиента нет возможности обойти причины ошибки для выбранного сервиса.
|
|||
|
|
|||
|
=== Обёртка для ошибок
|
|||
|
|
|||
|
Ошибки удобно обрабатывать используя дополнительную информацию, которую необходимо передавать вместе с ошибкой:
|
|||
|
|
|||
|
* _Timestamp_: время возникновения ошибки;
|
|||
|
* _Error Code_: код ошибки для удобства автоматизированной обработки ошибок;
|
|||
|
* _Error Text_: описание возникающей ошибки, допустимо выводить вместе со стектрейсом;
|
|||
|
* _Severity Level_: уровень журналирования ошибки;
|
|||
|
* _Notification_: в случае необходимости уведомлений об ошибке поле должно содержать адрес или список адресов систем/пользователей для оповещения;
|
|||
|
* _Retry_: информация о возможности повторной отправки сообщения;
|
|||
|
|
|||
|
_Uuid_ и _id_ сообщения
|
|||
|
|
|||
|
|