!!! An Executor is required to handle java.util.concurrent.Callable return values. Please, configure a TaskExecutor in the MVC config under "async support". The SimpleAsyncTaskExecutor currently in use is not suitable under load. ------------------------------- Request URI: '/admin/open/test/createMsgStream' !!!
时间: 2023-08-15 22:11:38 浏览: 284
浅谈java.util.concurrent包中的线程池和消息队列
这个错误是因为在处理异步请求时,需要使用一个Executor来处理Callable返回值。但是,在你的MVC配置中没有配置TaskExecutor,因此系统使用了SimpleAsyncTaskExecutor来处理异步请求,而这个Executor在负载较重的情况下可能无法满足要求。
为了解决这个问题,你可以在MVC配置文件中配置一个TaskExecutor来处理异步请求。例如,你可以使用ThreadPoolTaskExecutor,它可以管理一个线程池来处理异步请求。你可以像这样在配置文件中定义一个ThreadPoolTaskExecutor:
```xml
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10"/>
<property name="maxPoolSize" value="50"/>
<property name="queueCapacity" value="25"/>
</bean>
```
然后,在异步请求处理方法上添加@Async注解,并指定要使用的TaskExecutor,例如:
```java
@RestController
public class TestController {
@Autowired
private TaskExecutor taskExecutor;
@Async("taskExecutor")
@PostMapping("/test")
public CompletableFuture<String> testAsync() {
//异步处理逻辑
}
}
```
这样,当你的应用程序处理异步请求时,就会使用ThreadPoolTaskExecutor来处理Callable返回值,而不会出现上述错误。
阅读全文