Я использую SprigJDBC.У меня есть 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 миллисекунд) Я получаю асинхронный обратный вызов и должен получить данные из БД по ключу от обратного вызова.
Я делаю стресс-тест с Jmeter (и имитирующим сервером для получения синхронизации и асинхронного обратного вызова), используя 100 потоков, и в некоторых случаях я получаю исключение EmptyResultDataAccessException.Я думаю, что проблему можно решить с помощью управления транзакциями, но я не могу понять, как.Я попытался использовать DataSourceTransactionManager и сделал коммит после сохранения данных и до получения - это похоже на решение проблемы.Но все равно ценю все советы и помощь.Спасибо!