【问题标题】:Spring Cloud Sleuth: Initialise baggage itemSpring Cloud Sleuth:初始化行李项
【发布时间】:2022-06-17 22:23:51
【问题描述】:

我已经有了这个 Java 配置:

@Configuration
public class FAPIAutoConfiguration {

    private static final String INTERACTION_ID = "x-fapi-interaction-id";
    
    private final BaggageField fapiBaggageField = BaggageField.create(INTERACTION_ID);

    @Bean
    BaggagePropagationCustomizer baggagePropagationCustomizer() {
        return builder -> builder.add(SingleBaggageField.
            remote(fapiBaggageField));
    }

    @Bean
    CorrelationScopeCustomizer correlationScopeCustomizer() {
        return builder -> builder.add(SingleCorrelationField.create(fapiBaggageField));
    }
}

并且 Webflux 应用程序中的传播有效,但我想知道如果请求标头中不存在行李,则初始化行李的最佳方法是什么.我的意思是,如果标题丢失,生成一个值并传播这个值。

【问题讨论】:

    标签: spring-cloud-sleuth


    【解决方案1】:

    我最终在上面的配置中添加了一个TracingCustomizer 来填充该上下文中缺少的值。

        @Bean
        TracingCustomizer tracingCustomizer(UniqueIdGenerator generator) {
            return builder -> builder.addSpanHandler(new SpanHandler() {
                @Override
                public boolean begin(TraceContext context, MutableSpan span, TraceContext parent) {
                    var value = fapiBaggageField.getValue(context);
                    if (value == null) {
                        fapiBaggageField.updateValue(context, generator.next());
                    }
                    return super.begin(context, span, parent);
                }
            });
        }
    

    我不知道这是否是最好的选择

    【讨论】:

      猜你喜欢
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2018-07-25
      • 2016-11-23
      • 2021-06-07
      • 2021-09-06
      • 2017-10-25
      相关资源
      最近更新 更多