Я использую Spring-Integration, и у меня есть сообщения, которые проходят через int:chain
с несколькими элементами: int:service-activator
, int:transformers
и т. Д. В конце сообщение отправляется на конечную точку Rest другого приложения.Также существует errorHandler, который сохранит все Exception
в текстовом файле.
В целях администрирования я хотел бы сохранить некоторую информацию о том, что произошло в цепочке (например: «этот вызов БД вернул это», «во время этого преобразования это правило было применено» и т. Д.).Это будет эквивалентно файлу журнала, но привязано к Message
.Конечно, уже есть регистратор, но, в конце концов, мне нужно создать (либо после выполнения вызова Rest, либо при возникновении ошибки) файл для этого конкретного Message
с данными.
Мне было интересно, существует ли какой-то «контекст» для Message
, который я мог бы вызвать через любую часть цепи, и где я мог бы хранить вещи.Я не нашел ничего в официальной документации, но я не совсем уверен, что искать.
Я думал о том, чтобы поместить все это в само Сообщение, но:
- Это неизменный объект, поэтому мне нужно будет перестраивать его каждый раз, когда я хочу добавить что-то в его заголовок (или полезную нагрузку).
- Я не смог бы получить какие-либо новые данныеиз обработчика ошибок в случае исключения, потому что он принимает исходное сообщение.
- Я не могу добавить его к объекту полезной нагрузки, потому что некоторые нативные преобразователи / сервис-активаторы напрямую его используют (и это такжезначит переписывать много кода ...)
Я также думал о каком-то короле "потокового" компонента, который бы служил контекстом для каждого сообщения, но я вижу слишком многопроблема, вытекающая из этого.
Может быть, я ошибаюсь в некоторых из этих идей.В любом случае, мне просто нужен способ хранения данных через несколько элементов цепочки интеграции Spring, а также возможность доступа к ним в обработчике ошибок.