【发布时间】:2021-10-12 02:53:55
【问题描述】:
我有一个场景: 我有一个控制器。 我的控制器正在调用服务类。服务类将从数据库中获取所有记录并将其发布到 kafka。但是我不希望调用 api 的客户端等到整个数据都发布到 kafka。我希望它以异步方式进行。客户的工作只是调用 api 而已。我们会立即发送 200 响应码。
在后端,将从 DB 获取数据并处理到 kafka。 您能否建议如何做到这一点。
public class SampleController {
private SampleService sampleService;
@PostMapping("/")
public String handleAsyncResponse(@RequestBody Requestbean bean) {
sampleService.posttokafka(bean);
}
}
谢谢
【问题讨论】:
-
您可以尝试使用 Webflux。它的响应式模式可以实现你想要的,也有助于高效的数据检索和发布到 Kafka。
-
另一种可能性是使用 Spring 的
@Async注释。例如,请参阅this article over at baeldung。 -
嗨 @Nick 有任何示例代码可以参考上述案例吗?我从未在 webflux 上工作过。所以,不知道
-
@Debo 我没有任何简单的例子,但这篇文章会帮助你spring.io/guides/gs/reactive-rest-service。另一方面,正如 Turing85 建议的那样,
@Async也将是选项。 -
请注意,正确的响应是 202 而不是 200。
标签: java spring-boot spring-batch