在一个单一的春季微服务中有多个ReplyingKafkaTemplate <string,byte [],=“” byte [] =“”>

时间:2018-10-22 07:45:09

标签: apache-kafka spring-kafka

我正在开发一种微服务,需要使用spring kafka ReplyingKafkaTemplate查询两个不同的微服务。

当我通过一个微服务尝试此操作时,通过提供以下单个回复主题即可正常工作

@Bean
public ReplyingKafkaTemplate<String, byte[], byte[]> replyKafkaTemplate(ProducerFactory<String, byte[]> pf,
        KafkaMessageListenerContainer<String, byte[]> container) {
    return new ReplyingKafkaTemplate<>(pf, container);

}

@Bean
public ConsumerFactory<String, byte[]> consumerFactory() {
    return new DefaultKafkaConsumerFactory<>(consumerConfigs(), new StringDeserializer(),
            new ByteArrayDeserializer());
}

@Bean
public KafkaMessageListenerContainer<String, byte[]> replyContainer(ConsumerFactory<String, byte[]> cf) {
    ContainerProperties containerProperties = new ContainerProperties(**queryesultTopic**);
    return new KafkaMessageListenerContainer<>(cf, containerProperties);
}

但是现在我希望配置两个不同的主题。并想知道如何在春季kafka配置中执行此操作。

1 个答案:

答案 0 :(得分:1)

使用ReplyingKafkaTemplate.sendAndReceive(ProducerRecord<K, V> record)时,可以指定KafkaHeaders.REPLY_TOPIC标头。

Reference Manual中查看更多信息:

  

有关发送回复的更多信息,请参见“使用@SendTo转发侦听器结果”一节。在这种情况下,我们使用默认标头KafKaHeaders.REPLY_TOPIC来指示回复所针对的主题。