- Порезанный
- 23 сентября 2026 г. в 07:50 UTC
- Автор
- Kamo
- Обещать
- 90509f4
По умолчанию один поток планировщика Spring делится каждым методом @Scheduled в этой службе - 1-секундный импульс кампании, клещ капельного двигателя и собственный 60-секундный ReminderSchedulerService Среди них около десятка других. ProcessRemindersLocked отправляет каждое соответствующее напоминание по электронной почте / всплывающим окнам / sms, один блокирующий вызов за раз, на этой общей нити: развертка с несколькими должными напоминаниями Это, и все остальное запланировано на капсулу, так долго, как вся партия взяла, чтобы отправить. Каждое напоминание теперь работает на небольшом бассейне с фиксированными потоками (4 работника, названных в списке) Календарь-напоминание-отправитель), тот же принцип DripEngine уже применяется, передав весь свой пропуск. на рабочую нить — применяется здесь на напоминание вместо пропуска, так как медленная часть Блокировка SMTP/уведомления, а не сама подметка DB. Призывная нить все еще ждет вся партия (ограниченная 90-ми сливными тайм-аутами) перед возвратом processRemindersLocked, который Что держит аренда «email-календарь-напоминания», покрывающая весь пропуск: аренда, выпущенная в то время как Посылки, которые все еще находились в полете в другом месте, позволили бы другому контейнеру забрать те же напоминания и отправить Дважды. Что меняется, так это то, сколько времени занимает ожидание — в четыре раза меньше, никогда не хуже, чем сейчас. Старый последовательный цикл. ******************* Не удается без изменения: это доказывает, что каждая отправка выполняется на пул, а не нить вызова, и что вызов все еще блокируется, пока каждая отправка не закончится.
