Я разрабатываю Rest API с использованием весенней загрузки.
Этот остальные API будут развернуты на сервере приложений weblogic.
используя Java 8
Я нахожусь на этапе проектирования, поэтому у меня нет демонстрационного кода.
API получит полезную нагрузку запроса (для утверждения заказов).
Полезная нагрузка этого запроса может варьироваться от 1 до 100000 OrderIds
Для каждого из этих OrderIds мне нужно вызвать хранимую процедуру в Oracle, чтобы утвердить заказ.
Хранимая процедура имеет бизнес-логику, и может потребоваться от нескольких секунд до минут, чтобы ответить ответом.
Чтобы не заставлять конечного пользователя ждать, я планирую реализовать это с помощью "DeferredResult" из весны.
Для этого я буду вызывать вызов базы данных в новом потоке, используя:
ForkJoinPool.commonPool().submit(() -> {
//do database call here
}
Однако мне не ясно, как контролировать количество создаваемых потоков?
Должен ли я беспокоиться о последующих запросах (которые я не могу контролировать), которые также могут привести к созданию большего количества потоков?