Spring-интеграция: сохранить контекст сообщения через цепочку - PullRequest
0 голосов
/ 03 июля 2019

Я использую Spring-Integration, и у меня есть сообщения, которые проходят через int:chain с несколькими элементами: int:service-activator, int:transformers и т. Д. В конце сообщение отправляется на конечную точку Rest другого приложения.Также существует errorHandler, который сохранит все Exception в текстовом файле.

В целях администрирования я хотел бы сохранить некоторую информацию о том, что произошло в цепочке (например: «этот вызов БД вернул это», «во время этого преобразования это правило было применено» и т. Д.).Это будет эквивалентно файлу журнала, но привязано к Message.Конечно, уже есть регистратор, но, в конце концов, мне нужно создать (либо после выполнения вызова Rest, либо при возникновении ошибки) файл для этого конкретного Message с данными.

Мне было интересно, существует ли какой-то «контекст» для Message, который я мог бы вызвать через любую часть цепи, и где я мог бы хранить вещи.Я не нашел ничего в официальной документации, но я не совсем уверен, что искать.

Я думал о том, чтобы поместить все это в само Сообщение, но:

  • Это неизменный объект, поэтому мне нужно будет перестраивать его каждый раз, когда я хочу добавить что-то в его заголовок (или полезную нагрузку).
  • Я не смог бы получить какие-либо новые данныеиз обработчика ошибок в случае исключения, потому что он принимает исходное сообщение.
  • Я не могу добавить его к объекту полезной нагрузки, потому что некоторые нативные преобразователи / сервис-активаторы напрямую его используют (и это такжезначит переписывать много кода ...)

Я также думал о каком-то короле "потокового" компонента, который бы служил контекстом для каждого сообщения, но я вижу слишком многопроблема, вытекающая из этого.

Может быть, я ошибаюсь в некоторых из этих идей.В любом случае, мне просто нужен способ хранения данных через несколько элементов цепочки интеграции Spring, а также возможность доступа к ним в обработчике ошибок.

1 Ответ

0 голосов
/ 03 июля 2019

Добавьте заголовок, например карту или список, и добавляйте к нему на каждом этапе.

Среда делает нечто похожее, когда включена история сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...