服务提供者【test-provider8001】
Openfeign远程调用服务提供者搭建
文章地址http://t.csdnimg.cn/06iz8
相关接口
测试远程调用:http://localhost:8001/payment/index
服务消费者【test-consumer-resilience4j8004】
Openfeign远程调用消费者搭建
文章地址http://t.csdnimg.cn/06iz8
依赖
<!-- resilience4j隔离依赖 -->
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-bulkhead</artifactId>
<version>1.7.0</version>
</dependency>
<!-- resilience4j -->
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-cloud2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>
application.yml
resilience4j:
#线程池隔离
thread-pool-bulkhead:
instances:
# 实例名称:自己定义的名称,对应@Bulkhead的name
backendA:
# 最大线程池大小
maxThreadPoolSize: 4
# 核心线程池大小
coreThreadPoolSize: 2
# 队列容量
queueCapacity: 2
OrderController【控制层】
/**
* 测试线程池服务隔离
*
* @return
*/
@GetMapping("/thread")
@Bulkhead(name = "backendA", type = Bulkhead.Type.THREADPOOL)
//name:对应的配置名,type:隔离类型-信号量/线程
public CompletableFuture future() {
log.info("********** 进入方法 *******");
try {
TimeUnit.SECONDS.sleep(5);
} catch (InterruptedException e) {
e.printStackTrace();
}
log.info("********** 离开方法 *******");
//需要异步调用
return CompletableFuture.supplyAsync(() -> "线程池隔离信息......");
}
相关接口
测试线程池隔离:http://localhost:8004/order/thread
jmeter测试思路
配置文件设置核心线程2个最大4个服务会一次处理4个请求