java - Spring MVC 异步方法 (RXJava)

标签 java spring spring-mvc rx-java

编辑:我的答案如下

我有一个特定的场景,我可以使用一些指导。我有一个 POST 端点,我想调用一些异步方法(我不关心其结果,因此它们是无效的),并立即返回给用户。例如:

@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity subscribe(@RequestBody SomePayload payload) {
    CompletableFuture.runAsync(() -> someService.longRunningVoidMethod(payload));
    return new ResponseEntity(HttpStatus.OK);
}

有没有办法使用 RXJava 来做到这一点(我正在开发的 API 使用 RXJava,所以我想遵循与其余部分相同的模式)?比如,一个不发射任何东西的 Observable?我对 RXJava 非常陌生,因此我正在寻求一些更具体的建议,而我自己正在努力阅读这些建议。

谢谢!

最佳答案

明白了...

@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity subscribe(@RequestBody SomePayload payload) {
    Completable.fromAction(() -> someService.longRunningVoidMethod(payload))
           .subscribeOn(Schedulers.io())
           .subscribe();
    return new ResponseEntity(HttpStatus.OK);
}

我猜 .subscribeOn(Schedulers.io()) 使函数在后台任务上执行,而不是等待它完成后再继续。

关于java - Spring MVC 异步方法 (RXJava),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47895525/

相关文章:

spring - 使用 Spring Data REST 自定义端点

java - Maven+JDK9 模块 : Failed to parse module-info

java - 相当于扩展HttpServlet

java - 使用 SAML 和 Spring Security 的单点登录(SSO)

spring-mvc - 如何设置 OAuth2RestTemplate(更新后)

java - Spring JPA : How to upsert without losing data

java - 将参数传递给 GWT 模块

java - 使用 java 在 selenium 中设置 owasp zap 驱动程序

java - Java中不可修改的列表

java - Spring AntRequestMatcher 不匹配