Advertisement

Gateway 报错 java.lang.IllegalStateException: block()、blockFirst()和blockLast()调用阻塞方法

阅读量:

导致错误的根源在于,当执行负载均衡调用时,BlockingLoadBalancerClient 会执行一个阻塞操作。

复制代码
    	@Override
    	public <T> ServiceInstance choose(String serviceId, Request<T> request) {
        // 略...
        // block
    		Response<ServiceInstance> loadBalancerResponse = Mono.from(loadBalancer.choose(request)).block();
        // 略...
    		return loadBalancerResponse.getServer();
    	}
    
    
      
      
      
      
      
      
      
      
    

进入内部后,可观察到一个名为 blockingGet 的方法,其中包含对当前线程是否属于非阻塞线程(NonBlocking)的判断逻辑。

复制代码
    // BlockingSingleSubscriber 类方法
    final T blockingGet() {
    if (Schedulers.is

全部评论 (0)

还没有任何评论哟~