提问人:Alexandr 提问时间:11/17/2023 最后编辑:possumAlexandr 更新时间:11/20/2023 访问量:56
异步响应 HTTP
Async Response HTTP
问:
我们正在制作一个应该接受 HTTP 请求的服务。 此方法应将客户端数据发送到 Kafka“发送”主题,并暂时忘记它(但不是阻塞)
@GetMapping("/comp")
public Mono<ShareObj> handleRequest() {
CompletableFuture<ShareObj> future = new CompletableFuture<>();
ShareObj objectC = new ShareObj();
objectC.setReq(UUID.randomUUID().toString());
kafkaTemplate.send("send", objectC);
futureMap.put(objectC.getReq(), future);
return Mono.fromFuture(future);
}
读取发送主题中的数据,并将响应发送到“resp”主题。在我们有 @GetMapping(“/comp”) 的方法中,将有一个@KafkaListener来监听主题“resp”,我们需要从中为客户端获取数据。
@KafkaListener(topics = "resp", groupId = "consGroup")
public void listen(@Payload ShareObj req) {
System.out.println(req);
var future = futureMap.get(req.getReq());
if (future != null) {
future.complete(req);
futureMap.remove(req.getReq());
}
}
我想不出比 CompletableFuture 更好的方法来稍后返回响应。但是这里的吞吐量非常差。 你怎么能以另一种方式或一般的其他方法解决这个问题?
答: 暂无答案
评论