Skip to content

Commit 3335a99

Browse files
committed
测试异步
1 parent 8d1ba81 commit 3335a99

File tree

4 files changed

+71
-0
lines changed

4 files changed

+71
-0
lines changed

spring-cloud-gray-samples/spring-cloud-gray-service-b-sample/src/main/java/cn/springcloud/gray/service/b/ServiceBApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
77
import org.springframework.cloud.netflix.feign.EnableFeignClients;
88
import org.springframework.core.env.Environment;
9+
import org.springframework.scheduling.annotation.EnableAsync;
910

1011
import java.net.InetAddress;
1112
import java.net.UnknownHostException;
@@ -16,6 +17,7 @@
1617
@SpringBootApplication
1718
@EnableDiscoveryClient
1819
@EnableFeignClients
20+
@EnableAsync
1921
public class ServiceBApplication {
2022
private static final org.slf4j.Logger log = LoggerFactory.getLogger(ServiceBApplication.class);
2123

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package cn.springcloud.gray.service.b.configuration;
2+
3+
import cn.springcloud.gray.concurrent.GrayTaskDecorator;
4+
import cn.springcloud.gray.request.RequestLocalStorage;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
8+
9+
import java.util.concurrent.Executor;
10+
import java.util.concurrent.ThreadPoolExecutor;
11+
12+
/**
13+
* Description:异步任务线程池
14+
*
15+
* @author JianqiangZhao
16+
* @date 2019/1/14
17+
*/
18+
@Configuration
19+
public class TaskConfiguration {
20+
@Bean("taskExecutor")
21+
public Executor taskExecutor(RequestLocalStorage requestLocalStorage) {
22+
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
23+
executor.setCorePoolSize(100);
24+
executor.setMaxPoolSize(400);
25+
executor.setQueueCapacity(400);
26+
executor.setKeepAliveSeconds(60);
27+
executor.setWaitForTasksToCompleteOnShutdown(true);
28+
executor.setAwaitTerminationSeconds(60);
29+
executor.setThreadNamePrefix("taskExecutor-");
30+
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardPolicy());
31+
executor.setTaskDecorator(new GrayTaskDecorator(requestLocalStorage));
32+
return executor;
33+
}
34+
}

spring-cloud-gray-samples/spring-cloud-gray-service-b-sample/src/main/java/cn/springcloud/gray/service/b/rest/TestResource.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import cn.springcloud.gray.service.b.feign.Test2Client;
44
import cn.springcloud.gray.service.b.feign.TestClient;
5+
import cn.springcloud.gray.service.b.service.TestService;
56
import com.google.common.collect.ImmutableMap;
67
import lombok.extern.slf4j.Slf4j;
78
import org.springframework.beans.factory.annotation.Autowired;
@@ -11,6 +12,8 @@
1112

1213
import javax.servlet.http.HttpServletRequest;
1314
import java.util.Map;
15+
import java.util.concurrent.ExecutionException;
16+
import java.util.concurrent.Future;
1417

1518
/**
1619
* Created by saleson on 2017/10/18.
@@ -25,6 +28,8 @@ public class TestResource {
2528
private TestClient testClient;
2629
@Autowired
2730
private Test2Client test2Client;
31+
@Autowired
32+
private TestService testService;
2833

2934

3035
@RequestMapping(value = "/testGet", method = RequestMethod.GET)
@@ -80,6 +85,15 @@ public Map<String, Object> feignGet(
8085
return ImmutableMap.of("feignGet", "success.", "service-a-result", map);
8186
}
8287

88+
@RequestMapping(value = "/feignGetAsync", method = RequestMethod.GET)
89+
@ResponseBody
90+
public Map<String, Object> feignGetAsync(
91+
@RequestParam(value = "version", required = false) String version,
92+
HttpServletRequest request) throws ExecutionException, InterruptedException {
93+
Future<Map> map = testService.get(version);
94+
return ImmutableMap.of("feignGet", "success.", "service-a-result", map.get());
95+
}
96+
8397
@RequestMapping(value = "/feign2Get", method = RequestMethod.GET)
8498
@ResponseBody
8599
public Map<String, Object> feign2Get(
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package cn.springcloud.gray.service.b.service;
2+
3+
import cn.springcloud.gray.service.b.feign.TestClient;
4+
import org.springframework.beans.factory.annotation.Autowired;
5+
import org.springframework.scheduling.annotation.Async;
6+
import org.springframework.scheduling.annotation.AsyncResult;
7+
import org.springframework.stereotype.Service;
8+
9+
import java.util.Map;
10+
import java.util.concurrent.Future;
11+
12+
@Service
13+
public class TestService {
14+
@Autowired
15+
private TestClient testClient;
16+
17+
@Async("taskExecutor")
18+
public Future<Map> get(String version) {
19+
return AsyncResult.forValue(testClient.testGet(version));
20+
}
21+
}

0 commit comments

Comments
 (0)