У меня есть приложение, которое слушает события.На каждом мероприятии я делаю что-то и отправляю другое событие в результате.
[NameUpdated (Joe)] -> [do stuff] -> [PersonUpdated (Joe)]
Проблема в том, что у меня есть несколько событий, которые приводят к моему окончательному результату:
[NameUpdated (Joe)] -> [do stuff] -> [PersonUpdated (Joe, 29, "")]
[AgeUpdated (27)] -> [do stuff] -> [PersonUpdated (Joe, 27, "")]
[JobUpdated (Dev)] -> [do stuff] -> [PersonUpdated (Joe, 27, DEV)]
Все события собираются вместе за очень короткое время (скажем, в течение 1второй).В результате мое приложение также отправляет три события в секунду.Но только последний представляет интерес.
Моя идея - немного отложить исполнение.Когда я получаю первое событие, я хочу создать задание, которое будет выполнено через пару секунд.Когда я получаю второе и третье событие, я могу проверить, есть ли уже работа или нет.
Я ищу некоторые функции Spring (Boot) для этого.Нетрудно реализовать очередь и планировщик, обрабатывающий ее, но я не хочу делать много вещей, созданных вручную.Поэтому я ищу какой-нибудь умный способ добиться этого.