有没有可以针对每个请求来源(系统)设置线程数的线程池?

2016-11-15 16:55:10 +08:00
 depress
服务器开 Webservice 服务,需要根据每个请求来源(不同来源系统上送的请求参数会附带各自的系统号)设置各自的线程数,超过其自己所拥有的最大线程数后就拒绝请求,不知道有没有可以达到这种要求的线程池工具?如果没有的话,我只能 Spring AOP 拦截上送参数判断系统号然后设置各自的计数器了...
2049 次点击
所在节点    Java
5 条回复
sorra
2016-11-15 17:11:13 +08:00
每种来源用一个线程池?判断系统号应该要自己写。
计数器很麻烦吧,你还要记得-1 。
8bit
2016-11-15 17:15:51 +08:00
那直接不同系统开不同的线程池得了
chocotan
2016-11-16 08:59:59 +08:00
hystrix 可以满足你 : )
depress
2016-11-16 17:53:18 +08:00
@sorra 是的,所以 AOP 得在入口和出口都拦截做计数:(

@chocotan 这个貌似是我依赖别人可用?现在是客户端依赖我,我这边能用这个吗
chocotan
2016-11-17 09:56:49 +08:00
@depress
可以给 webservice 业务代码外面套个 HystrixCommand ,根据系统号拿到对应的线程池配置

我是这样用的:
https://gist.github.com/chocotan/fe754204d8af39dfaf72faaf0f198edb

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/320704

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX