Как сохранить только некоторые заголовки сообщений и удалить все остальные? - PullRequest
0 голосов
/ 02 апреля 2020

Как сохранить только указанные c заголовки, но избавиться от всех остальных заголовков?

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

Я попытался указать handle() функцию, которая возвращает новое сообщение, содержащее только интересующие меня заголовки, но, похоже, оно не работает. Сообщение журнала содержит группу заголовков HTTP, которые были установлены из восходящего потока HttpRequestHandlingMessagingGateway.

IntegrationFlows.from(myChannel())
                // Strip off the HTTP specific headers
                .handle((payload, headers) -> MessageBuilder
                        .withPayload(payload)
                        .setHeader("myCustomHeader1", headers.get("myCustomHeader1", String.class))
                        .setHeader("myCustomHeader2", headers.get("myCustomHeader2", String.class))
                        .build()
                )
                .log()

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

Ответы [ 2 ]

1 голос
/ 02 апреля 2020
class HeaderStripper {

    public Message<?> strip(Message<?> msg) {
        return org.springframework.integration.support.MessageBuilder.withPayload(msg.getPayload())
                .setHeader("foo", msg.getHeaders().get("foo"))
                .setHeader("bar", msg.getHeaders().get("bar"))
                .build();
    }

}

, а затем

.transform(new HeaderStripper())
0 голосов
/ 02 апреля 2020

Комментарий Артема Билана указал мне правильное направление для того, как бы я сделал это в строке. Я просто не мог получить правильный синтаксис ранее, вот как это выглядит со встроенным transform():

IntegrationFlows.from(myChannel())
                // Strip off the HTTP specific headers
                .transform(Message.class, message -> MessageBuilder
                            .withPayload(message.getPayload())
                            .setHeader("myCustomHeader1", message.getHeaders().get("myCustomHeader1", String.class))
                            .setHeader("myCustomHeader2", message.getHeaders().get("myCustomHeader2", String.class))
                            .build()
                )
                .log()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...