Spring Integration kafka出站通道适配器

时间:2019-02-20 03:58:21

标签: spring-integration spring-kafka spring-integration-dsl

我有一个模型对象,该对象在经过几次转换和解析后便被填充。现在,我需要使用spring集成将模型内的message属性发送到kafka。 我可以使用messageKey方法构造密钥,但是如何从m.getPayload()。getMessage()这样的模型中获取实际消息并将其发送到kafka。

                .publishSubscribeChannel(pubSub -> pubSub
                        .subscribe(flow -> flow
                            .bridge(e -> e.order(Ordered.HIGHEST_PRECEDENCE))
                            .handle(Kafka.outboundChannelAdapter(kafkaTemplate).
                                    messageKey(m -> ((AcarsFlightInformation) m.getPayload()).getFlightNbr()).topic(acarsKafkaTopic)))

1 个答案:

答案 0 :(得分:0)

不清楚您要问什么。发送到适配器的消息的有效负载成为生产者记录的值。

我认为您要问的是,您只想发送部分有效载荷。

.handle ...之前使用标头增强器和转换器...

.enrichHeaders(h -> h.headerExpression(KafkaHeaders.MESSAGE_KEY, "payload.flightNumber")
.transform("payload.message")
.handle(Kafka.outboundChannelAdapter(kafkaTemplate)
      .topic(acarsKafkaTopic))
.get();

适配器将为密钥寻找该标头。