Apache верблюд теряет идентификатор трассы и идентификатор пролета после верблюжьего раскола - PullRequest
0 голосов
/ 31 января 2020

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

[traceId: spanId:] INFO ---

Есть ли способ включить вернуть информацию об отслеживании?

Из документации Camel Я попытался запустить трассировку после разделения, используя

context.setTracing(true)

Но похоже, что это не работает .

Я что-то упустил, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2020

Когда вы используете split, будет создан новый и старый обмен и для передачи свойств обмена вниз по течению, вам потребуется использовать агрегатор для этого.

Пример:

.split().tokenize(System.lineSeparator()).aggregationStrategy(new YourAggregationStrategyClass())

0 голосов
/ 31 января 2020

Возможно, у вас есть traceId и spanId, хранящиеся в заголовках сообщений обмена, которые теряются после разделения.

Решение состоит в том, чтобы сохранить их в свойствах обмена (до разделения), которые сохраняются для всего обработка обмена (см. Передача значений между процессорами в apache верблюд ).

Если вы используете Java DSL, вы можете использовать:

.setProperty("traceId ", constant("traceIdValue"))
.setProperty("spanId", constant("spanIdValue"))

Вы можете использовать язык простых выражений (https://camel.apache.org/manual/latest/simple-language.html) для доступа к свойствам после разделения, используя exchangeProperty.property_name . Пример:

.log(LoggingLevel.INFO, "[traceId:${exchangeProperty.traceId}  spanId:${exchangeProperty.spanId}]")
...