情况是;
我有ServiceA
,它在每个请求5000毫秒后以AResponse
响应。
我也有ServiceB
会调用ServiceA
(使api像调用一样)。然后根据AResponse
将数据插入db(当前为hsql)中。
我有2个数据库连接池限制。并且30000ms连接超时默认为。我不想更改这些值。
因此,当尝试同时调用100个用户时,请使用serviceB.getAndSave()
方法。它给用户30秒后超时。
// ServiceA method of getting response
public AResponse getData(param){
try {
Thread.sleep(5000);
return new AResponse("SUCCESS");
} catch (InterruptedException e) {
e.printStackTrace();
return null;
}
}
// ServiceB class has annotation @Transactional
// In ServiceB inserts data to db depends on serviceA's AResponse.
public getAndSave(){
AResponse aresponse = serviceA.getData(param);
MyData myData = new MyData(aresponse)
myRepository.save(myData);
}
那么,在没有脏数据的情况下如何处理这种情况并解决超时陷阱。顺便说一下,我所有的数据都必须正确保存。