Если сам заголовок отсутствует, и мы хотим проверить и продолжить в routeBuilder в Camel - PullRequest
0 голосов
/ 12 июня 2019

Я сталкиваюсь с проблемой кодирования верблюдов:

1). У нас есть два уровня кода: первый - потребитель, а другой - производитель. 2). Потребитель звонит производителю, поскольку у производителя много микросервисов. 3). Во время звонка Producer генерирует уникальный идентификатор для отслеживания транзакции. 4). Мы можем напрямую позвонить производителю, и он сгенерирует набор результатов. 5). При вызове источника необходимо добавить идентификатор транзакции уникального журнала в заголовок из POSTMAN.

Теперь возникает вопрос: хотите ли вы напрямую обратиться к производителю и не хотите передавать идентификатор транзакции журнала, есть ли способ маршрутизатор моего производителя понимает, что LOGTRANSACTION отсутствует в заголовке, и он сгенерирует заголовок с именем "LOGTRANSACTION" и добавить уникальное значение?

и если мы нажмем на потребителя, то идентификатор LOGTRANSACTION распространяется так же, как и на уровень производителя.

1 Ответ

1 голос
/ 12 июня 2019

Предполагая, что header, о котором вы говорите, является заголовком сообщения Camel;Вы можете добавить новый Processor перед вашим существующим маршрутом для проверки входящего Message с помощью getHeader("LOGTRANSACTION"); ,.Если этот заголовок отсутствует, ваш новый процессор может сделать setHeader("LOGTRANSACTION", newHeader);, чтобы прикрепить его синтетически (каким-то образом!).Помните, что если вы сделаете exchange.getIn().getHeader(), то все входящие заголовки и тело будут сохранены, но вызовы getOut() очистят исходное сообщение IN.Если вы хотите получить дополнительные (более качественные) ответы, рассмотрите возможность публикации соответствующих частей вашего маршрута (ов).

...