Я работаю над добавлением функций регистрации/мониторинга для нескольких развертываний интеграции с весной. Я хочу создать транзакцию logger в начале рабочего процесса и закрыть транзакцию журнала в конце рабочего процесса. В конце транзакции logger я отправлю журналы и метрики на централизованный сервер регистрации. В конце дня я хочу видеть журналы для всех сообщений, которые прошли через рабочие процессы в нескольких развертываниях интеграции с весной.Spring Integration: как узнать, когда завершен рабочий процесс?
Весенние интеграционные развертывания проходят через множество команд, и я не могу рассчитывать на каждую команду, чтобы добавить код регистрации для меня, поэтому я хочу написать код, который будет работать через развертывание интеграции весной.
Чтобы начать транзакцию с журналом, решение заключалось в использовании перехватчика глобального канала для набора входящих каналов обмена сообщениями. Все рабочие процессы, построенные во всех развертываниях, используют один и тот же набор входящих каналов, поэтому будет запущен перехватчик транзакций запуска журнала. Также я передаю данные транзакции регистратора как часть заголовков сообщений
Но у меня возникли проблемы с поиском решения для прекращения транзакции. Рабочие процессы могут быть синхронными, а также асинхронными. Кроме того, не все конечные точки в рабочем процессе будут иметь выходной канал.
Какие-либо стратегии/идеи о том, как закрыть транзакцию регистрации?
Пример рабочего процесса образца показан на изображении ниже: