Уведомление об истечении срока действия с интервалами — Как мне избежать повторных уведомлений для одной и той же записи?

#java #notifications #quartz-scheduler #scheduling

#java #уведомления #quartz-планировщик #планирование

Вопрос:

Я внедряю приложение J2EE, у которого есть лицензия в стиле expiration, и я хотел бы отправлять уведомления по электронной почте разным клиентам по мере приближения истечения срока действия лицензии клиента. Я хотел бы иметь возможность делать что-то вроде уведомления, например, за 90/60/30 дней до истечения срока действия, но, очевидно, я не хочу случайно отправлять повторные уведомления, если запрос на лицензии, срок действия которых приближается, приводит к одному и тому же набору.

Единственный способ, который я могу придумать, — это сохранить что-то рядом с лицензионным ключом, чтобы указать дату последнего уведомления (или дату следующего уведомления).

т. е. Компания A, строка лицензии, срок действия: 2010-09-16, следующее уведомление: 2010-08-30

Есть ли лучший способ сделать это, о котором я не думаю?

Я хотел бы предложить более общий способ планирования событий на основе времени (за 30 дней до события X) и для других элементов, поэтому, если я могу избежать добавления «времени следующего уведомления» к паре таблиц в базе данных, я бы выбрал это.

Я могу использовать Quartz, если это поможет. Я использовал это раньше, но только с RAMJobStore, поэтому между перезапусками ничего не сохранялось.

Ответ №1:

Если вы собираетесь отправлять уведомления ровно за 90/60/30 дней до истечения срока действия, как это будут повторные уведомления?

Вы отправляете уведомления в приложении, например всплывающее окно, во время запуска приложения или как отдельный удаленный процесс, который отправляет уведомления, например, по электронной почте? Если это внутри приложения, вы всегда можете выполнить простую проверку во время запуска приложения

Комментарии:

1. Я имею в виду, допустим, я отправляю уведомление для компании A 2 сентября, потому что срок действия ее лицензии истекает через 90 дней. Затем, по какой-либо причине, приложение перезапускается, и оно возвращается, выполняет периодическую проверку, обнаруживает, что лицензия компании A истекает через 90 дней. Насколько я вижу, я должен сохранить что-то, указывающее, что уведомление за 90 дней уже было отправлено им. Я просто спрашивал, есть ли способ лучше, чем то, что я мог придумать.

2. В этом случае ваш подход кажется подходящим. Это должно быть где-то сохранено для отслеживания