我正在使用SprigJDBC。 我有用于从db保存和获取数据的无状态bean:
@Stateless
@Transactional
public class DBLayerImpl extends DbLayer {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveData(Data data){
getJdbcTemplate().update....
}
public Data getDataByKey(Long key) {
getJdbcTemplate().queryForObject(.....
}
}
我在一个线程中执行http请求 并由我将此请求的同步响应保存到数据库中。
具有非常低的延迟(大约20毫秒),我正在获取异步回调,并且应该通过回调键从db获取数据。
我正在使用100个线程使用Jmeter(以及用于同步和异步回调的模拟服务器)进行压力测试,在少数情况下,我会得到EmptyResultDataAccessException。我认为可以通过事务管理解决问题,但我不知道如何解决。 我试图使用DataSourceTransactionManager并在保存数据之后和获取之前进行提交-这看起来像解决问题。但仍然感谢所有建议和帮助。谢谢!