Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSE能支持服务端异步吗? #1525

Closed
zhufeizzz opened this issue Jan 11, 2020 · 5 comments
Closed

CSE能支持服务端异步吗? #1525

zhufeizzz opened this issue Jan 11, 2020 · 5 comments

Comments

@zhufeizzz
Copy link

类似于SpringMVC的@async注解,长时间运行的服务,不需要返回值。

AsyncRestTemplate支持客户端异步,实际还是占用Http请求,客户端服务端保持连接。

没找到相关的说明,难道一定要在服务端代码里面自己放到异步队列?

@yhs0092
Copy link
Member

yhs0092 commented Jan 11, 2020

Java-Chassis的异步资料在这里,Java-Chassis叫这种模式 "Reactive"
另外,异步和HTTP连接占用是两个概念。HTTP 1.1协议要求在一条连接上必须是一来一回的数据发送方式。不能有上一个请求的应答还没有被服务端返回,客户端就复用这条连接发送下一个请求的情况。所以即使你的代码是Reactive模式运行的,在HTTP 1下还是需要足够多的连接数来维持高并发。

@liubao68
Copy link
Contributor

liubao68 commented Jan 11, 2020

不用。 java-chassis的运行机制和SpringMVC不同。 默认情况下,java-chassis的业务执行都是在独立线程池执行,不占用http请求。 不需要@async标签。 你还可以非常简洁的通过配置将某个不同的业务接口,配置为使用独立的线程池执行

可以通过设计线程池模型Spring Boot集成了解运行时差异

@zhufeizzz
Copy link
Author

zhufeizzz commented Jan 11, 2020

不用。 java-chassis的运行机制和SpringMVC不同。 默认情况下,java-chassis的业务执行都是在独立线程池执行,不占用http请求。 不需要@async标签。 你还可以非常简洁的通过配置将某个不同的业务接口,配置为使用独立的线程池执行

可以通过设计线程池模型Spring Boot集成了解运行时差异

你们可能没理解我的意思,我是想长任务立马返回Null给客户端,释放HTTP连接。因为我只要确保服务调用了,不关注结果。
如果自己写代码的话就是接收到请求,放入线程池队列,然后return void.

@liubao68
Copy link
Contributor

你说的这种方式目前没提供。可能需要你自己写一些代码将逻辑放到自己的线程池执行,并立即返回一个结果。

@liubao68
Copy link
Contributor

Close old issues. Please feel free to open a new one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants