Entaxy

Использование обработчика ошибок

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