Spring Integration Java DSL: как направить поток в канал ошибок, если возникает ошибка - PullRequest
0 голосов
/ 19 ноября 2018

Как направить поток из канала myChannel в канал ошибок myErrorChannel, если в вызове Http.outboundGateway возникает ошибка?

@Bean
private IntegrationFlow myChannel() {
    return f -> f
            .handle(Http.outboundGateway("http://localhost:8080/greeting")
                    ...
                    .expectedResponseType(String.class));
}

@Bean
private IntegrationFlow myErrorChannel() {
    return f -> f
            ...
}

В обработчике ошибок я обернусообщение об ошибке внутри моего пользовательского JSON, и я отправлю его как часть обычного потока обратно в исходную систему.

Это хороший способ обработки ошибок в Spring Integration Java DSL?

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете использовать ExpressionEvaluatingRequestHandlerAdvice с returnFailureExpressionResult = true и использовать его во втором аргументе .handle(..., e -> e.advice(...)).

Вы настраиваете этот совет для onFailureExpression, чтобы иметь возможность возвращать что-то значимое. Если вы все еще думаете, что вам нужно отправить на канал и получить ответ, тогда вам нужно иметь @MessagingGateway и использовать его в этом onFailureExpression для отправки и получения. Обычная конфигурация failureChannel в ExpressionEvaluatingRequestHandlerAdvice не ожидает ответа.

Другой подход может быть реализован с использованием того же @MessagingGateway, но перед этим myChannel IntegrationFlow. Затем вы можете настроить этот шлюз для errorChannel, и здесь ожидается ответ от потока ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...