V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
depress
V2EX  ›  Java

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

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

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

    我是这样用的:
    https://gist.github.com/chocotan/fe754204d8af39dfaf72faaf0f198edb
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3274 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:17 · PVG 20:17 · LAX 04:17 · JFK 07:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.