在Spring Cloud中配置和使用Hystrix线程池的满策略
一、配置文件方式(以YAML为例)
(一)设置线程池属性
- 确定线程池键(ThreadPool Key)
- 在
hystrix配置下,每个线程池都有一个唯一的键(threadpool.[threadPoolKey])来标识。例如,如果要为名为myService的服务配置线程池,threadPoolKey可以是myServiceThreadPool。
- 在
- 配置核心线程数、最大线程数和队列大小
- 在
application.yml文件中,可以按照以下方式配置:
hystrix: threadpool: myServiceThreadPool: coreSize: 10 maxSize: 20 queueSizeRejectionThreshold: 100- 这里设置了
myServiceThreadPool线程池的核心线程数为10,最大线程数为20,队列大小(即任务队列能够容纳的最大任务数量)为100。
- 在
(二)配置满策略
- 选择满策略类型
- Hystrix提供了不同的满策略类型,如
AbortPolicy(默认)、CallerRunsPolicy、DiscardPolicy和DiscardOldestPolicy。要配置满策略,需要设置hystrix.threadpool.[threadPoolKey].rejection - policy属性。
- Hystrix提供了不同的满策略类型,如
- 配置示例
- 如果要将
myServiceThreadPool的满策略设置为CallerRunsPolicy,配置如下:
hystrix: threadpool: myServiceThreadPool: rejection - policy: CALLER_RUNS - 如果要将
二、代码方式
(一)创建Hystrix线程池配置类
- 定义配置类
- 创建一个Java类,例如
HystrixThreadPoolConfig,并使用@Configuration注解将其标记为配置类。
import com.netflix.hystrix.HystrixThreadPoolProperties; import com.netflix.hystrix.strategy.HystrixPlugins; import com.netflix.hystrix.strategy.concurrency.HystrixConcurrencyStrategy; import com.netflix.hystrix.strategy.concurrency.HystrixRequestContext; import - 创建一个Java类,例如


2716

被折叠的 条评论
为什么被折叠?



