【问题标题】:Apache camel losing trace id and span id after camel split eip骆驼拆分eip后Apache骆驼丢失跟踪ID和跨度ID
【发布时间】:2020-05-16 20:06:08
【问题描述】:

我需要在我的所有日​​志中提供跟踪 ID 和跨度 ID。但是我观察到,在我的骆驼路线中的第一个拆分器之后,我再也看不到日志中的跟踪 ID 和跨度 ID。

[traceId: spanId:] INFO ---

有什么方法可以启用回溯信息?

Camel Documentation,我尝试使用拆分后开始跟踪

context.setTracing(true)

但看起来这不起作用。

我有什么遗漏吗,请帮忙。

【问题讨论】:

    标签: java apache-camel trace zipkin


    【解决方案1】:

    您可能将 traceId 和 spanId 存储在拆分后丢失的交换消息标头中。

    一种解决方案是将它们存储在交换属性中(在拆分​​之前),这些属性存储用于交换的整个处理(请参阅Passing values between processors in apache camel)。

    如果您使用的是 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}]")
    

    【讨论】:

    • 嘿 Radu,我不相信这种方法。我在我的项目中使用 Zipkin 进行跟踪。在日志中手动设置跟踪信息违背了使用 Zipkin 的目的。
    【解决方案2】:

    当您使用拆分时,将创建一个新旧交换并将交换属性传递到下游,您需要使用聚合器来执行此操作。

    例子:

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

    【讨论】:

      猜你喜欢
      • 2016-09-08
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2017-01-03
      相关资源
      最近更新 更多