- Verschifft
- 23. September 2026 um 07:50 UTC
- Autor
- Kamo
- Ausschuss
- 90509f4
Der Standard-Single-Planer-Thread des Spring wird von jeder @Scheduled-Methode in diesem Service geteilt. der 1-Sekunden-Kampagnenpuls, die Zecke des Tropfmotors und ReminderSchedulerServices eigene 60-Sekunden Sweep unter etwa einem Dutzend andere. processRemindersLocked gesendet jede ordnungsgemäße Erinnerung E-Mail/Popup / sms, ein blockierender Anruf zu einer Zeit, auf diesem gemeinsamen Thread: ein Sweep mit mehreren fälligen Erinnerungen gehalten es, und alles andere auf der Hülse geplant, solange die ganze Partie zu senden. Jeder Erinnerungsversand läuft jetzt auf einem kleinen festen Fadenpool (4 Arbeiter, benannt Kalender-Reminder-Sender), das gleiche Prinzip DripEngine gilt bereits, indem Sie seinen gesamten Pass ab zu einem Arbeiterfaden - hier pro Erinnerung statt pro Pass angewendet, da der langsame Teil der Blockieren von SMTP/Metifikationssendungen anstelle des DB-Sweeps selbst. Der Ruf-Thred wartet noch auf die ganze Charge (gebunden durch eine 90er Drain Timeout) vor ProzessRemindersLocked kehrt zurück was hält die 'E-Mail-Kalender-Reminderungen' Mietvertrag für den gesamten Pass: ein Mietvertrag veröffentlicht, während Sendungen waren noch im Flug an anderer Stelle würde ein anderes pod abholen die SAME Due Erinnerungen und senden sie zweimal. Was sich ändert, ist nur, wie lange diese Wartezeit dauert - bis zu vierfach weniger, nie schlimmer als die alte aufeinander folgende Schleife. **************** scheitert ohne die Änderung: es beweist jede Senden läuft auf der Pool statt des Aufrufs-Threads, und dass der Anruf immer noch blockiert, bis jeder Senden beendet ist.
