Я использую интеграцию Spring 4.3.14, Spring batch 3.8.0 и драйвер mssql 6.1.0.
У меня есть несколько процессов, работающих параллельно (2 модуля), и все идет в агрегатор с хранилищем сообщений jdbc и реестром блокировки.
Для этой работы каждый модуль может использовать не более 8 потоков. Для небольших данных это нормально, но когда данные большие и все потоки заняты выполнением операций с БД, я получаю исключение тайм-аута для запроса на удаление таблицы INT_LOCK.
Тайм-аут запроса не установлен для соединения с БД. Другие длинные запросы выполняются без тайм-аута.
Как только возникает ошибка, сообщение переходит к errorChannel, и задание не выполняется.
Пожалуйста, помогите мне в этом.
Сообщение об ошибке:
org.springframework.messaging.MessageHandlingException: error occurred in message handler [org.springframework.integration.config.AggregatorFactoryBean#0];
nested exception is org.springframework.dao.CannotAcquireLockException: Failed to lock mutex at f53339e4-9017-3231-821d-5a6d11144496;
nested exception is org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [<code>DELETE FROM INT_LOCK WHERE REGION=? AND LOCK_KEY=? AND CREATED_DATE<?
]; SQL
штат [HY008]; код ошибки [0]; Время запроса истекло.
Вложенное исключение - com.microsoft.sqlserver.jdbc.SQLServerException: истекло время ожидания запроса.