2.8 KiB
Использование обработчика ошибок
Для централизованной обработки ошибок будем использовать “процессор” зарегистрированный через <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 сообщения