问题描述
我正在尝试创建一个 Rest API,该 API 必须异步执行后台数据库提取操作,并在不等待后台执行完成的情况下将事务 ID 返回给调用方。 我目前已经使用 executor Executor 实现了这一点。但是我得到一个空指针异常,因为父线程在可运行任务被执行之前完成了操作。有什么解决办法吗? 在这里,甚至在数据库操作开始执行之前就调用了返回的 ResponseEntity。
@Configuration
@EnableAsync
public class AsynchConfig {
@Bean(name = "taskExecutor")
public Executor taskExecutor()
{
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(2);
executor.setQueueCapacity(100);
executor.setThreadNamePrefix("CurrentThread -");
return executor;
}
Rest API 如下:
@ApiOperation("")
public ResponseEntity<?> uploadCSVSendCommunication(@RequestParam String parameters)
{
asyncConfig.taskExecutor().execute(() ->
{
//perform DB validations in a service
} );
asyncConfig.taskExecutor().execute(() ->
{
//Insert a record into transaction table
if(!statusId.isEmpty())
//set the status object;
});
return new ResponseEntity<>(statusObject,HttpStatus.OK);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)