Триггер для выработки Message Throwing Event

Всем привет!

Вопрос наверное, не столько про камунду, сколько про Spring Boot.

Дано:

  1. Микросервис Spring Boot + Spring MVC/REST + Spring Data + Camunda
  2. Есть набор сущностей A, B, C, D, E, update которых происходит через REST-контроллер.
  3. При update сущностей нужно проверять, изменились ли определенные поля и посылать message throwing event (вместе с измененными данными) в процессный движок.
  4. Периодически со стороны фронта работает автосохранение, вызываемое если пользователь внес изменения в форме (запросов на изменение может быть много).

Рассматриваются следующие альтернативные варианты:

  1. Организовать отдельный метод (в контроллере и сервисе), который будет принимать на вход message + данные/DTO.
  2. Добавить дополнительный обработчик в @EntityListeners на классы A, B, C, D, E (точнее на их абстрактного предка) в котором перехватывать update и посылать сообщение.
  3. Добавить вызовы для отправки сообщения в существующие контроллеры/сервисы для update этих объектов.
  4. По таймеру (раз в N минут) проверять есть ли изменения указанных объектов и посылать сообщение, если есть? (Не понятно, где хранить последнее состояние значений? Если в переменных процесса, как синхронизировать переменные процесса и данные?)

Не могу выбрать, какой из вариантов является самым оптимальным с точки зрения быстродействия, нагрузки, сложности реализации и архитектурной чистоты.
Пока склоняюсь к варианту 2.

UPDATE
Эти два варианта не годятся, т.к. могут рождаться параллельные потоки в приложении, которые могут вызвать исключения/взаимные блокировки.

Пока остановились на опции 1.