Интеграция Spring: как настроить все исходящие сообщения об ошибках

Мне нужно настроить все сообщения об ошибках, возвращающиеся к вызывающей стороне моих потоков интеграции, чтобы не допустить утечки информации, независимо от того, выдаются ли они как исключение или обрабатываются как асинхронные ошибки. Я хотел бы избежать определения пользовательского канала ошибок для каждого обработчика сообщений. Я безуспешно пытался подключить преобразователь к каналу ошибок по умолчанию:

@Bean
IntegrationFlow errorFlow() {
    return IntegrationFlows.from("errorChannel")
            .transform("{'status': 500, 'error': 'Internal Server Error'}")
            .get();
}

Есть ли центральная точка, где я могу преобразовать все исходящие сообщения об ошибках?


person dschulten    schedule 30.10.2017    source источник


Ответы (1)


По вашей логике похоже, что вы имеете дело с REST - запрос/ответ. Итак, вам нужно вернуть ответ в точку запроса. Это доступно через replyChannel заголовок сообщения запроса. К такой информации вы можете получить доступ в свойстве MessagingException.failedMessage payload в ErrorMessage.

Подводя итог всему этому, ваш .transform() должен ожидать MessagingException в качестве полезной нагрузки и создавать выходное сообщение с копированием заголовков из этого failedMessage. Таким образом, сообщение будет отправлено в ответный канал сообщения запроса HTTP Inbound Gateway.

person Artem Bilan    schedule 30.10.2017