我正在开发一种微服务,需要使用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配置中执行此操作。
答案 0 :(得分:1)
使用ReplyingKafkaTemplate.sendAndReceive(ProducerRecord<K, V> record)
时,可以指定KafkaHeaders.REPLY_TOPIC
标头。
在Reference Manual中查看更多信息:
有关发送回复的更多信息,请参见“使用@SendTo转发侦听器结果”一节。在这种情况下,我们使用默认标头
KafKaHeaders.REPLY_TOPIC
来指示回复所针对的主题。