Всем привет!
Вопрос наверное, не столько про камунду, сколько про Spring Boot.
Дано:
- Микросервис Spring Boot + Spring MVC/REST + Spring Data + Camunda
- Есть набор сущностей A, B, C, D, E, update которых происходит через REST-контроллер.
- При update сущностей нужно проверять, изменились ли определенные поля и посылать message throwing event (вместе с измененными данными) в процессный движок.
- Периодически со стороны фронта работает автосохранение, вызываемое если пользователь внес изменения в форме (запросов на изменение может быть много).
Рассматриваются следующие альтернативные варианты:
- Организовать отдельный метод (в контроллере и сервисе), который будет принимать на вход message + данные/DTO.
- Добавить дополнительный обработчик в @EntityListeners на классы A, B, C, D, E (точнее на их абстрактного предка) в котором перехватывать update и посылать сообщение.
- Добавить вызовы для отправки сообщения в существующие контроллеры/сервисы для update этих объектов.
- По таймеру (раз в N минут) проверять есть ли изменения указанных объектов и посылать сообщение, если есть? (Не понятно, где хранить последнее состояние значений? Если в переменных процесса, как синхронизировать переменные процесса и данные?)
Не могу выбрать, какой из вариантов является самым оптимальным с точки зрения быстродействия, нагрузки, сложности реализации и архитектурной чистоты.
Пока склоняюсь к варианту 2.