Spring Integration: Как настроить header-mapper глобально - PullRequest
2 голосов
/ 25 апреля 2019

У меня есть приложение, которое прослушивает разные источники событий. Для каждого из этих событий я создаю IntegrationFlow, где я просто конвейеризирую такие операции, как фильтрация и преобразование, и, наконец, отправляю это сообщение другому API через HTTP-запрос.

Все эти события идут с пользовательскими заголовками, которые я тоже хотел бы распространять.

Мне удалось распространить их, настроив DefaultHttpHeaderMapper (что он уже распространяет стандартные заголовки http, такие как «Accept» или «Content-Type»), но проблема заключается в том, что мне нужно сделать это для каждого IntegrationFlow.

Рассмотрим этот пример:

    @Bean
    public IntegrationFlow eventFlow(){
        return IntegrationFlows.from(SINK)
            .filter("headers['type'] == 'POST'")
            .transform(Transformers.fromJson(Event.class))
            .handle(
                Http.outboundGateway(uri)
                    .httpMethod(HttpMethod.POST)
                    .mappedRequestHeaders("custom-header-prefix*"))
            .channel("nullChannel")
            .get();
    }

Есть ли способ настроить этот DefaultHttpHeaderMapper, но глобально?

...