Решение, которое также упоминается в официальной документации, — это добавление двух аннотаций на уровне метода:
Код: Выделить всё
@Transactional()
@TransactionConfiguration(timeout = 360)
public void savePlan( Map< PlantId, CalendarData > aCalendarsMap,
SPScenario aScenario, int aCNumber )
{
FlowPlan plan= createOrGetPlanBase( aScenario, aCNumber );
for( CalendarData calendarData : aCalendarsMap.values() )
{
ConstraintsCalendar calendar = plan.getCalendar( constraintsCalendarData.getPlantUnit() );
if( calendar == null )
{
calendar = plan.createCalendar( constraintsCalendarData.getPlantUnit() );
}
calendar.createConstraints( calendarData.getConstraints() );
em.flush();
em.detach( calendar );
}
}
Изменение тайм-аута с помощью @TransactionConfiguration можно выполнить только на
начальном уровне транзакции
Я также попробовал добавить аннотацию 2 поверх вызывающего метода savePlan(), а также уровень класса обслуживания, ошибок не происходит, но увеличение таймаута не работает (я получаю таймаут через 1 минуту, что является значением по умолчанию).
Что у меня уже сработало, так это увеличение таймаута для всего приложения, добавив эту конфигурацию в Properties.yml, но пока я хочу этого избежать.
Код: Выделить всё
quarkus:
transaction-manager:
default-transaction-timeout: 360s
Кто-нибудь знает, как правильно увеличить время ожидания транзакции в приложении Quarkus?
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/792 ... one-at-the
Мобильная версия