我在我的Rest控制器中使用ReplyingKafkaTemplate返回同步响应。我还要设置标题REPLY_TOPIC。对于侦听器微服务部分,
@KafkaListener(topics = "${kafka.topic.request-topic}")
@SendTo
public Model listen(Model<SumModel,SumResp> request) throws InterruptedException {
SumModel model = request.getRequest();
int sum = model.getNumber1() + model.getNumber2();
SumResp resp = new SumResp(sum);
request.setReply(resp);
request.setAdditionalProperty("sum", sum);
return request;
}
我的问题是,@sentTo批注如何将消息发布到标题中提供的主题。应该有一个KafkaTemplate bean还是不需要它?由于我们只是在不使用任何KafkaTemplate或ReplyingKafkaTemplate bean的情况下返回消息。
没有任何kafka模板,它可以工作还是需要KafkaTemplate或ReplyingKafkaTemplate bean?
谢谢
答案 0 :(得分:0)
是的,使用模板发送回复...
Assert.state(replyTopic == null || this.replyTemplate != null,
"a KafkaTemplate is required to support replies");
如果应用程序上下文中只有一个模板,Spring Boot会自动将模板连接到侦听器容器工厂。
map.from(this.replyTemplate).to(factory::setReplyTemplate);
如果上下文中还没有模板,启动也会自动配置模板。