如何从邮件标题获取我的主题名称并发布

时间:2019-03-08 12:30:34

标签: json apache-kafka http-headers spring-integration kafka-producer-api

我是弹簧整合的新手。我正在尝试构建一个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"));
}

0 个答案:

没有答案