Моделирование потока событий путем ручного опроса объектов, которые изменились из Rest API - PullRequest
0 голосов
/ 06 ноября 2019

Мне поручено создать поток событий, в котором у меня есть автоматический опросчик (установленный с 10-минутными интервалами) для извлечения всех сущностей, которые изменились за последние 10 минут.

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

  1. Получает предыдущеесостояние объекта
  2. Сравнивает это предыдущее состояние с новейшим состоянием (т. е. diff)
  3. Создайте событие обновления, если хотя бы одно из полей, которые бизнес-логика определила как важные
  4. Если событие обновления было создано, замените предыдущее состояние объекта на самое последнее

Учитывая эту архитектурную проблему, существует ли известный шаблон или набор шаблонов или рекомендации по построениюиз этого типа системы?

1 Ответ

1 голос
/ 13 ноября 2019

Взгляните на шаблон наблюдателя и шаблон итератора , а также на парадигму реактивного программирования .

Обратите внимание, чтоэто довольно общие подходы к обработке изменений состояния (или событий). Реализация зависит от языка программирования и операционной среды, которую вы используете. Вы действительно должны искать существующие фреймворки и библиотеки, такие как ReactiveX (кроссплатформенный) или Spring WebFlux (Java).

Здесь интересная дискуссия о связи между понятиями.

...