EnrichHeader в зависимости от состояния - PullRequest
0 голосов
/ 07 апреля 2020

Я пишу универсальный c адаптер, который получает сообщения от EMS и отправляет их в Kafka Topi c. Я должен обогатить заголовок, если конкретный флаг установлен в true из файла конфигурации. Выражение заголовка также будет существовать в файле конфигурации

return IntegrationFlows.from(org.springframework.integration.jms.dsl.Jms
        .messageDrivenChannelAdapter(org.springframework.integration.jms.dsl.Jms
                .container(this.queueConnFactory, this.queue)
                .transactionManager(transactionManager()).get()))
        .enrichHeaders(
                h -> h.headerExpression(KafkaHeaders.MESSAGE_KEY, "headers['flightNbr']")) 
        .handle(Kafka.outboundChannelAdapter(kafkaTemplate).topic(kafkaTopic))
        .get();

Я знаю, как добавить заголовки из полученного сообщения, но как мы можем условно добавить заголовки? Также, если флаг ложен, заголовки не будут применяться.

1 Ответ

1 голос
/ 07 апреля 2020

Вместо этого headerExpression() есть headerFunction(String name, Function<Message<P>, ?> function). Итак, что-то вроде этого должно работать для вас:

              .enrichHeaders(h ->
                        h.headerFunction(KafkaHeaders.MESSAGE_KEY, m -> {
                            if (SOME_STATE) {
                                return m.getHeaders().get("flightNbr");
                            }
                            else {
                                return null;
                            }
                        }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...