@org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean(org.springframework.cloud.sleuth.Tracer.class)

Here are the examples of the java api @org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean(org.springframework.cloud.sleuth.Tracer.class) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

1 Examples 7

15 Source : OtelAutoConfiguration.java
with Apache License 2.0
from spring-cloud-incubator

/**
 * {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration
 * Auto-configuration} to enable tracing via Spring Cloud Sleuth and OpenTelemetry SDK.
 *
 * @author Marcin Grzejszczak
 * @author John Watson
 * @since 1.0.0
 */
@Configuration(proxyBeanMethods = false)
@ConditionalOnClreplaced({ io.opentelemetry.api.trace.Tracer.clreplaced, OtelProperties.clreplaced })
@ConditionalOnOtelEnabled
@ConditionalOnProperty(value = "spring.sleuth.enabled", matchIfMissing = true)
@ConditionalOnMissingBean(org.springframework.cloud.sleuth.Tracer.clreplaced)
@EnableConfigurationProperties({ OtelProperties.clreplaced, SleuthSpanFilterProperties.clreplaced, SleuthBaggageProperties.clreplaced, SleuthTracerProperties.clreplaced })
@Import({ OtelBridgeConfiguration.clreplaced, OtelPropagationConfiguration.clreplaced, TraceConfiguration.clreplaced, SleuthAnnotationConfiguration.clreplaced, OtelResourceConfiguration.clreplaced })
@AutoConfigureBefore(BraveAutoConfiguration.clreplaced)
public clreplaced OtelAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    OpenTelemetry otel(SdkTracerProvider tracerProvider, ContextPropagators contextPropagators) {
        return OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).setPropagators(contextPropagators).build();
    }

    @Bean
    @ConditionalOnMissingBean
    SdkTracerProvider otelTracerProvider(SpanLimits spanLimits, ObjectProvider<List<SpanProcessor>> spanProcessors, SpanExporterCustomizer spanExporterCustomizer, ObjectProvider<List<SpanExporter>> spanExporters, Sampler sampler, Resource resource) {
        SdkTracerProviderBuilder sdkTracerProviderBuilder = SdkTracerProvider.builder().setResource(resource).setSampler(sampler).setSpanLimits(spanLimits);
        List<SpanProcessor> processors = spanProcessors.getIfAvailable(ArrayList::new);
        processors.addAll(spanExporters.getIfAvailable(ArrayList::new).stream().map(e -> SimpleSpanProcessor.create(spanExporterCustomizer.customize(e))).collect(Collectors.toList()));
        processors.forEach(sdkTracerProviderBuilder::addSpanProcessor);
        return sdkTracerProviderBuilder.build();
    }

    @Bean
    @ConditionalOnMissingBean
    Resource otelResource(Environment env, ObjectProvider<List<Supplier<Resource>>> resourceProviders) {
        String applicationName = env.getProperty("spring.application.name");
        Resource resource = defaultResource(applicationName);
        List<Supplier<Resource>> resourceCustomizers = resourceProviders.getIfAvailable(ArrayList::new);
        for (Supplier<Resource> provider : resourceCustomizers) {
            resource = resource.merge(provider.get());
        }
        return resource;
    }

    private Resource defaultResource(String applicationName) {
        if (applicationName == null) {
            return Resource.getDefault();
        }
        return Resource.getDefault().merge(Resource.create(Attributes.of(ResourceAttributes.SERVICE_NAME, applicationName)));
    }

    @Bean
    @ConditionalOnMissingBean
    SpanLimits otelSpanLimits(OtelProperties otelProperties) {
        return SpanLimits.getDefault().toBuilder().setMaxNumberOfAttributes(otelProperties.getMaxAttrs()).setMaxNumberOfAttributesPerEvent(otelProperties.getMaxEventAttrs()).setMaxNumberOfAttributesPerLink(otelProperties.getMaxLinkAttrs()).setMaxNumberOfEvents(otelProperties.getMaxEvents()).setMaxNumberOfLinks(otelProperties.getMaxLinks()).build();
    }

    @Bean
    @ConditionalOnMissingBean
    Tracer otelTracer(TracerProvider tracerProvider, OtelProperties otelProperties) {
        return tracerProvider.get(otelProperties.getInstrumentationName());
    }

    @Bean
    @ConditionalOnMissingBean
    Sampler otelSampler(OtelProperties otelProperties) {
        return Sampler.traceIdRatioBased(otelProperties.getTraceIdRatioBased());
    }

    @Bean
    SleuthContextListener sleuthContextListener() {
        return new SleuthContextListener();
    }
}