我是弹簧整合的新手。我正在尝试构建一个spring rest服务,它将通过一些json消息获取任何HTTP请求并发布到kafka主题。
我的json消息将通过RequestBody发布,该消息将在消息头中包含主题名称。
我能够将消息从我的控制器发布到kafka频道,但是我很难从json消息标题中获取主题名称。
任何人都可以建议一种从我的消息头中获取主题名称的方法(通常HTTP请求包含带有主题名称的json消息),然后使用该主题来发布消息。
我的json:
{"resourceType": "MessageHeader",
"topicName": "testToptic",
"messagePayload":{
"location": "chennai",
"messageDetail": {
"department-id": 123,
"department-name": "SSS",
"pincode": 600009
}
}
}}
这里是我的bean和处理程序
@Bean
public IntegrationFlow hanldeGenericKafka() {
return IntegrationFlows.from(sendToKafkaChannel)
.handle(
kafkaGenericMessageHandler(producerFactory),
e -> e.id("kafkaProducer2"))
.get();
}
public KafkaProducerMessageHandlerTemplateSpec<String, String> kafkaGenericMessageHandler(
ProducerFactory<String, String> producer) {
return Kafka
.outboundChannelAdapter(producer)
.sync(true)
.headerMapper(kafkaDefaultHeaderMapper())
.messageKey(m -> m.getHeaders()
.get("topicname"))
.configureKafkaTemplate(t -> t.id("kafkaTemplate"));
}