Я работаю с верблюдом apache и хотел бы добавить определенные ключи к своим журналам с помощью MDC. Я прошел через официальный Camel MDC Logging documentation, который довольно велик. Я могу записать свой маршрут без особых усилий. Мне также нужно добавить поле из тела Верблюда.Apache Camel MDC добавить поле от тела
Худший сценарий ситуации Я могу добавить это вручную во всех маршрутах, но мне было интересно, можно ли проще добавлять поля из тела в MDC?
Любые идеи приветствуются. Мне бы очень хотелось иметь возможность сделать это, не вдаваясь в каждый маршрут и добавляя один лайнер.
Update:
Реализован пользовательский MDCUnitOfWork и завод в моем проекте. Я могу видеть CustomUnitOfWorkFactory, создавая свой CustomUnitOfWork, который затем устанавливает значения MDC.
Однако я заметил, что это происходит только в начале маршрута.
В моем случае использования, я опрос Amazon SQS в качестве моего первого маршрута. У меня нет необходимой информации здесь. На первом маршруте я создаю свой контекст и устанавливаю его в тело Camel, где находится моя информация, которую мне нужно установить в MDC.
Можно ли создать UnitOfWork перед вторым маршрутом?
Спасибо Клаус за быстрый ответ. Это похоже на правильное направление. Я внедрил свой пользовательский MDCUnitOfWork. И смог увидеть это в действии. Пожалуйста, взгляните на мой обновленный раздел, о котором идет речь. –
См. MDCUnitOfWork - переопределяет контекст push/pop route, который вызывается при входе UoW в маршрут. –
Спасибо Клаусу, я смог переопределить метод «beforeProcess», который, как мне кажется, также выполняется до выполнения маршрута. Работает так, как ожидалось для меня. Благодарю. –