diff --git a/.vscode/cspell.json b/.vscode/cspell.json
index 086147a324541..6f802b861ef19 100644
--- a/.vscode/cspell.json
+++ b/.vscode/cspell.json
@@ -127,6 +127,7 @@
"sdk/core/azure-xml/**",
"sdk/cosmos/azure-cosmos-dotnet-benchmark/**",
"sdk/core/azure-core-tracing-opentelemetry/**",
+ "sdk/core/azure-core-tracing-opentelemetry-samples/**",
"sdk/cosmos/azure-cosmos-benchmark/**",
"sdk/core/azure-json-gson/**",
"sdk/cosmos/azure-cosmos-spark_3-1_2-12/**",
@@ -339,6 +340,7 @@
"odata",
"ODBC",
"okhttp",
+ "OTLP",
"OLTP",
"onboarded",
"Onco",
diff --git a/eng/versioning/external_dependencies.txt b/eng/versioning/external_dependencies.txt
index 8e23faf7e4bc6..b8601cb632a37 100644
--- a/eng/versioning/external_dependencies.txt
+++ b/eng/versioning/external_dependencies.txt
@@ -200,7 +200,6 @@ io.opentelemetry:opentelemetry-sdk;1.28.0
io.opentelemetry:opentelemetry-sdk-metrics;1.28.0
io.opentelemetry:opentelemetry-sdk-logs;1.28.0
io.opentelemetry:opentelemetry-exporter-logging;1.28.0
-io.opentelemetry:opentelemetry-exporter-jaeger;1.28.0
io.opentelemetry:opentelemetry-exporter-otlp;1.28.0
io.opentelemetry:opentelemetry-api-logs;1.26.0-alpha
io.opentelemetry:opentelemetry-sdk-testing;1.28.0
diff --git a/sdk/core/azure-core-metrics-opentelemetry/README.md b/sdk/core/azure-core-metrics-opentelemetry/README.md
index 1377837ede0d8..bf2897a875730 100644
--- a/sdk/core/azure-core-metrics-opentelemetry/README.md
+++ b/sdk/core/azure-core-metrics-opentelemetry/README.md
@@ -81,9 +81,10 @@ SdkMeterProvider meterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build())
.build();
+OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().setMeterProvider(meterProvider).build();
// Pass OpenTelemetry instance to MetricsOptions.
MetricsOptions customMetricsOptions = new OpenTelemetryMetricsOptions()
- .setOpenTelemetry(OpenTelemetrySdk.builder().setMeterProvider(meterProvider).build());
+ .setOpenTelemetry(openTelemetry);
// configure Azure Client to use customMetricsOptions - it will use meterProvider
// to create meters and instruments
diff --git a/sdk/core/azure-core-metrics-opentelemetry/pom.xml b/sdk/core/azure-core-metrics-opentelemetry/pom.xml
index f3eeda546dce0..c0ec62ea49415 100644
--- a/sdk/core/azure-core-metrics-opentelemetry/pom.xml
+++ b/sdk/core/azure-core-metrics-opentelemetry/pom.xml
@@ -141,7 +141,6 @@
io.opentelemetry:opentelemetry-sdk-testing:[1.28.0]
io.opentelemetry:opentelemetry-exporter-logging:[1.28.0]
io.opentelemetry:opentelemetry-exporter-otlp:[1.28.0]
- io.opentelemetry:opentelemetry-exporter-jaeger:[1.28.0]
diff --git a/sdk/core/azure-core-metrics-opentelemetry/src/main/java/com/azure/core/metrics/opentelemetry/OpenTelemetryMeterProvider.java b/sdk/core/azure-core-metrics-opentelemetry/src/main/java/com/azure/core/metrics/opentelemetry/OpenTelemetryMeterProvider.java
index 48ed6e292360c..11b081910de25 100644
--- a/sdk/core/azure-core-metrics-opentelemetry/src/main/java/com/azure/core/metrics/opentelemetry/OpenTelemetryMeterProvider.java
+++ b/sdk/core/azure-core-metrics-opentelemetry/src/main/java/com/azure/core/metrics/opentelemetry/OpenTelemetryMeterProvider.java
@@ -68,7 +68,7 @@ public OpenTelemetryMeterProvider() {
* .registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build())
* .build();
*
- * OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
+ * OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder()
* .setTracerProvider(tracerProvider)
* .setMeterProvider(meterProvider)
* .setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
diff --git a/sdk/core/azure-core-metrics-opentelemetry/src/samples/java/com/azure/core/metrics/opentelemetry/MetricsJavaDocCodeSnippets.java b/sdk/core/azure-core-metrics-opentelemetry/src/samples/java/com/azure/core/metrics/opentelemetry/MetricsJavaDocCodeSnippets.java
index cd9b07106b3c5..448bd2e59a7bf 100644
--- a/sdk/core/azure-core-metrics-opentelemetry/src/samples/java/com/azure/core/metrics/opentelemetry/MetricsJavaDocCodeSnippets.java
+++ b/sdk/core/azure-core-metrics-opentelemetry/src/samples/java/com/azure/core/metrics/opentelemetry/MetricsJavaDocCodeSnippets.java
@@ -11,7 +11,6 @@
import com.azure.core.util.metrics.Meter;
import com.azure.core.util.metrics.MeterProvider;
import io.opentelemetry.api.GlobalOpenTelemetry;
-import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
@@ -93,9 +92,10 @@ public void readmeSampleCustomSdkConfiguration() {
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build())
.build();
+ OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().setMeterProvider(meterProvider).build();
// Pass OpenTelemetry instance to MetricsOptions.
MetricsOptions customMetricsOptions = new OpenTelemetryMetricsOptions()
- .setOpenTelemetry(OpenTelemetrySdk.builder().setMeterProvider(meterProvider).build());
+ .setOpenTelemetry(openTelemetry);
// configure Azure Client to use customMetricsOptions - it will use meterProvider
// to create meters and instruments
@@ -108,6 +108,7 @@ public void readmeSampleCustomSdkConfiguration() {
sampleClient.methodCall("get items");
// END: readme-sample-customConfiguration
+ openTelemetry.close();
}
/**
@@ -125,7 +126,7 @@ public void configureClientLibraryToUseCustomMeter() {
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build())
.build();
- OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
+ OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder()
.setTracerProvider(tracerProvider)
.setMeterProvider(meterProvider)
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
@@ -157,6 +158,7 @@ public void configureClientLibraryToUseCustomMeter() {
span.end();
// END: com.azure.core.util.metrics.OpenTelemetryMeterProvider.createMeter#custom
+ openTelemetry.close();
}
/**
diff --git a/sdk/core/azure-core-tracing-opentelemetry-samples/pom.xml b/sdk/core/azure-core-tracing-opentelemetry-samples/pom.xml
index 0a60221a7aab4..903b28e642a58 100644
--- a/sdk/core/azure-core-tracing-opentelemetry-samples/pom.xml
+++ b/sdk/core/azure-core-tracing-opentelemetry-samples/pom.xml
@@ -59,8 +59,8 @@
io.opentelemetry
- opentelemetry-exporter-jaeger
- 1.28.0
+ opentelemetry-sdk-extension-autoconfigure
+ 1.28.0
test
diff --git a/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/CreateConfigurationSettingLoggingExporterSample.java b/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/CreateConfigurationSettingLoggingExporterSample.java
index a8cfc139a79d6..5bfd36c69ed9f 100644
--- a/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/CreateConfigurationSettingLoggingExporterSample.java
+++ b/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/CreateConfigurationSettingLoggingExporterSample.java
@@ -3,6 +3,9 @@
package com.azure.core.tracing.opentelemetry.samples;
+import com.azure.core.tracing.opentelemetry.OpenTelemetryTracingOptions;
+import com.azure.core.util.ClientOptions;
+import com.azure.core.util.TracingOptions;
import com.azure.data.appconfiguration.ConfigurationClient;
import com.azure.data.appconfiguration.ConfigurationClientBuilder;
import io.opentelemetry.api.trace.Span;
@@ -18,7 +21,6 @@
* in App Configuration through the {@link ConfigurationClient}.
*/
public class CreateConfigurationSettingLoggingExporterSample {
- private static final Tracer TRACER = configureLoggingExporter();
private static final String CONNECTION_STRING = "";
/**
@@ -26,22 +28,38 @@ public class CreateConfigurationSettingLoggingExporterSample {
*
* @param args Ignored args.
*/
+ @SuppressWarnings("try")
public static void main(String[] args) {
- configureLoggingExporter();
+ OpenTelemetrySdk openTelemetry = configureTracing();
+
+ // In this sample we configured OpenTelemetry without registering global instance, so we need to pass it explicitly to the Azure SDK.
+ // If we used ApplicationInsights or OpenTelemetry agent, or registered global instance, we would not need to pass it explicitly.
+ TracingOptions tracingOptions = new OpenTelemetryTracingOptions().setOpenTelemetry(openTelemetry);
ConfigurationClient client = new ConfigurationClientBuilder()
.connectionString(CONNECTION_STRING)
+ .clientOptions(new ClientOptions().setTracingOptions(tracingOptions))
.buildClient();
- doClientWork(client);
+ Tracer tracer = openTelemetry.getTracer("sample");
+
+ Span span = tracer.spanBuilder("my-span").startSpan();
+ try (Scope s = span.makeCurrent()) {
+ // current span propagates into synchronous calls automatically. ApplicationInsights or OpenTelemetry agent
+ // also propagate context through async reactor calls.
+ client.setConfigurationSetting("hello", "text", "World");
+ } finally {
+ span.end();
+ }
+
+ openTelemetry.close();
}
/**
- * Configure the OpenTelemetry {@link LoggingSpanExporter} to enable tracing.
- *
- * @return The OpenTelemetry {@link Tracer} instance.
+ * Configure the OpenTelemetry to print traces with {@link LoggingSpanExporter}.
*/
- private static Tracer configureLoggingExporter() {
+ private static OpenTelemetrySdk configureTracing() {
+ // configure OpenTelemetry explicitly or with io.opentelemetry:opentelemetry-sdk-extension-autoconfigure package
SdkTracerProvider tracerProvider =
SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(LoggingSpanExporter.create()).build())
@@ -49,23 +67,6 @@ private static Tracer configureLoggingExporter() {
return OpenTelemetrySdk.builder()
.setTracerProvider(tracerProvider)
- .buildAndRegisterGlobal()
- .getTracer("AppConfig-Sample");
- }
-
- /**
- * Creates the {@link ConfigurationClient} and creates a configuration in Azure App Configuration with distributed
- * tracing enabled and using the Logging exporter to export telemetry events.
- */
- @SuppressWarnings("try")
- private static void doClientWork(ConfigurationClient client) {
- Span span = TRACER.spanBuilder("my-span").startSpan();
- try (Scope s = span.makeCurrent()) {
- // current span propagates into synchronous calls automatically. ApplicationInsights or OpenTelemetry agent
- // also propagate context through async reactor calls.
- client.setConfigurationSetting("hello", "text", "World");
- } finally {
- span.end();
- }
+ .build();
}
}
diff --git a/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/ListKeyVaultSecretsAutoConfigurationSample.java b/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/ListKeyVaultSecretsAutoConfigurationSample.java
index c0651fc95be42..f917f5a474d9f 100644
--- a/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/ListKeyVaultSecretsAutoConfigurationSample.java
+++ b/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/ListKeyVaultSecretsAutoConfigurationSample.java
@@ -8,11 +8,11 @@
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;
import com.azure.security.keyvault.secrets.models.KeyVaultSecret;
-import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope;
-import io.opentelemetry.exporter.logging.LoggingSpanExporter;
+import io.opentelemetry.sdk.OpenTelemetrySdk;
+import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
import reactor.util.context.Context;
import static com.azure.core.util.tracing.Tracer.PARENT_TRACE_CONTEXT_KEY;
@@ -26,7 +26,8 @@ public class ListKeyVaultSecretsAutoConfigurationSample {
private static final String VAULT_URL = "";
@SuppressWarnings("try")
public void syncClient() {
- Tracer tracer = configureTracing();
+ OpenTelemetrySdk openTelemetry = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
+ Tracer tracer = openTelemetry.getTracer("sample");
// BEGIN: readme-sample-context-auto-propagation
SecretClient secretClient = new SecretClientBuilder()
@@ -46,10 +47,12 @@ public void syncClient() {
}
// END: readme-sample-context-auto-propagation
+ openTelemetry.close();
}
public void asyncClient() {
- Tracer tracer = configureTracing();
+ OpenTelemetrySdk openTelemetry = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
+ Tracer tracer = openTelemetry.getTracer("sample");
// BEGIN: readme-sample-context-manual-propagation
SecretAsyncClient secretAsyncClient = new SecretClientBuilder()
@@ -73,20 +76,7 @@ public void asyncClient() {
} finally {
span.end();
}
-
// END: readme-sample-context-manual-propagation
- }
-
- /**
- * Configure the OpenTelemetry {@link LoggingSpanExporter} to enable tracing.
- *
- * @return The OpenTelemetry {@link Tracer} instance.
- */
- private static Tracer configureTracing() {
- // configure OpenTelemetry SDK using io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:
- // OpenTelemetrySdk sdk = AutoConfiguredOpenTelemetrySdk.initialize()
- // .getOpenTelemetrySdk();
-
- return GlobalOpenTelemetry.getTracer("Async-List-KV-Secrets-Sample");
+ openTelemetry.close();
}
}
diff --git a/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/ListKeyVaultSecretsJaegerExporterSample.java b/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/ListKeyVaultSecretsJaegerExporterSample.java
deleted file mode 100644
index f6a1a87960608..0000000000000
--- a/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/ListKeyVaultSecretsJaegerExporterSample.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License.
-
-package com.azure.core.tracing.opentelemetry.samples;
-
-import com.azure.identity.DefaultAzureCredentialBuilder;
-import com.azure.security.keyvault.secrets.SecretClient;
-import com.azure.security.keyvault.secrets.SecretClientBuilder;
-import com.azure.security.keyvault.secrets.models.KeyVaultSecret;
-import io.opentelemetry.api.trace.Span;
-import io.opentelemetry.api.trace.Tracer;
-import io.opentelemetry.context.Scope;
-import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
-import io.opentelemetry.sdk.OpenTelemetrySdk;
-import io.opentelemetry.sdk.trace.SdkTracerProvider;
-import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
-
-import java.time.Duration;
-
-/**
- * Sample to demonstrate using {@link JaegerGrpcSpanExporter} to export telemetry events when asynchronously creating
- * and listing secrets from a Key Vault using the {@link SecretClient}.
- */
-public class ListKeyVaultSecretsJaegerExporterSample {
- private static final Tracer TRACER = configureJaegerExporter();
- private static final String VAULT_URL = "";
-
- /**
- * The main method to run the application.
- *
- * @param args Ignored args.
- */
- public static void main(String[] args) {
- SecretClient secretClient = new SecretClientBuilder()
- .vaultUrl(VAULT_URL)
- .credential(new DefaultAzureCredentialBuilder().build())
- .buildClient();
-
- doClientWork(secretClient);
- }
-
- /**
- * Configure the OpenTelemetry {@link JaegerGrpcSpanExporter} to enable tracing.
- *
- * @return The OpenTelemetry {@link Tracer} instance.
- */
- private static Tracer configureJaegerExporter() {
- // Export traces to Jaeger
- JaegerGrpcSpanExporter jaegerExporter =
- JaegerGrpcSpanExporter.builder()
- .setEndpoint("http://localhost:14250")
- .setTimeout(Duration.ofMinutes(30000))
- .build();
-
- // Set to process the spans by the Jaeger Exporter
- return OpenTelemetrySdk.builder()
- .setTracerProvider(
- SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(jaegerExporter)).build())
- .buildAndRegisterGlobal()
- .getTracer("List-KV-Secrets-Sample");
- }
-
- /**
- * Create a secret and list all the secrets for a Key Vault using the
- * {@link SecretClient} with distributed tracing enabled and using the Jaeger exporter to export telemetry events.
- */
- @SuppressWarnings("try")
- private static void doClientWork(SecretClient secretClient) {
-
- Span span = TRACER.spanBuilder("my-span").startSpan();
- try (Scope s = span.makeCurrent()) {
- // current span propagates into synchronous calls automatically. ApplicationInsights or OpenTelemetry agent
- // also propagate context through async reactor calls.
- secretClient.setSecret(new KeyVaultSecret("StorageAccountPassword", "password"));
- secretClient.listPropertiesOfSecrets().forEach(secretProperties -> {
- KeyVaultSecret secret = secretClient.getSecret(secretProperties.getName());
- System.out.printf("Retrieved Secret with name: %s%n", secret.getName());
- });
- } finally {
- span.end();
- }
- }
-}
diff --git a/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/TracingJavaDocCodeSnippets.java b/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/TracingJavaDocCodeSnippets.java
index bba479c1a55fd..5bf4d5d352f46 100644
--- a/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/TracingJavaDocCodeSnippets.java
+++ b/sdk/core/azure-core-tracing-opentelemetry-samples/src/samples/java/com/azure/core/tracing/opentelemetry/samples/TracingJavaDocCodeSnippets.java
@@ -9,15 +9,15 @@
import com.azure.core.util.Context;
import com.azure.core.util.TracingOptions;
import com.azure.core.util.tracing.TracerProvider;
-import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope;
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
+import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
-import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
+import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
import static com.azure.core.util.tracing.Tracer.PARENT_TRACE_CONTEXT_KEY;
@@ -31,16 +31,15 @@ public void sampleGlobalSdkConfiguration() {
// BEGIN: com.azure.core.util.tracing.TracingOptions#default
// no need to configure OpenTelemetry if you're using the OpenTelemetry Java agent (or another vendor-specific Java agent based on it).
-
// if you're using OpenTelemetry SDK, you can configure it with io.opentelemetry:opentelemetry-sdk-extension-autoconfigure package:
- // AutoConfiguredOpenTelemetrySdk.initialize();
+ OpenTelemetry opentelemetry = AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
// configure Azure Client, no metric configuration needed
AzureClient sampleClient = new AzureClientBuilder()
.endpoint("https://my-client.azure.com")
.build();
- Span span = GlobalOpenTelemetry.getTracer("azure-core-samples")
+ Span span = opentelemetry.getTracer("azure-core-samples")
.spanBuilder("doWork")
.startSpan();
@@ -63,10 +62,10 @@ public void customProviderSdkConfiguration() {
// configure OpenTelemetry SDK explicitly per https://opentelemetry.io/docs/instrumentation/java/manual/
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
- .addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))
+ .addSpanProcessor(BatchSpanProcessor.builder(LoggingSpanExporter.create()).build())
.build();
- OpenTelemetry openTelemetry = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
+ OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
// Pass OpenTelemetry container to TracingOptions.
TracingOptions customTracingOptions = new OpenTelemetryTracingOptions()
.setOpenTelemetry(openTelemetry);
@@ -82,13 +81,14 @@ public void customProviderSdkConfiguration() {
sampleClient.methodCall("get items");
// END: com.azure.core.tracing.TracingOptions#custom
+ openTelemetry.close();
}
public void passContextExplicitly() {
// BEGIN: com.azure.core.util.tracing#explicit-parent
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
- .addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))
+ .addSpanProcessor(BatchSpanProcessor.builder(LoggingSpanExporter.create()).build())
.build();
AzureClient sampleClient = new AzureClientBuilder()
@@ -110,6 +110,7 @@ public void passContextExplicitly() {
parent.end();
// END: com.azure.core.util.tracing#explicit-parent
+ tracerProvider.close();
}
/**
diff --git a/sdk/core/azure-core-tracing-opentelemetry/README.md b/sdk/core/azure-core-tracing-opentelemetry/README.md
index 666ea28e868dd..17662d13cedae 100644
--- a/sdk/core/azure-core-tracing-opentelemetry/README.md
+++ b/sdk/core/azure-core-tracing-opentelemetry/README.md
@@ -75,10 +75,10 @@ Pass OpenTelemetry TracerProvider to Azure client:
// configure OpenTelemetry SDK explicitly per https://opentelemetry.io/docs/instrumentation/java/manual/
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
- .addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))
+ .addSpanProcessor(BatchSpanProcessor.builder(LoggingSpanExporter.create()).build())
.build();
-OpenTelemetry openTelemetry = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
+OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
// Pass OpenTelemetry container to TracingOptions.
TracingOptions customTracingOptions = new OpenTelemetryTracingOptions()
.setOpenTelemetry(openTelemetry);
@@ -133,7 +133,7 @@ Pass OpenTelemetry `Context` under `PARENT_TRACE_CONTEXT_KEY` in `com.azure.core
```java com.azure.core.util.tracing#explicit-parent
SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
- .addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))
+ .addSpanProcessor(BatchSpanProcessor.builder(LoggingSpanExporter.create()).build())
.build();
AzureClient sampleClient = new AzureClientBuilder()
@@ -181,7 +181,6 @@ try {
} finally {
span.end();
}
-
```
### Using the plugin package with AMQP client libraries
diff --git a/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracingOptions.java b/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracingOptions.java
index 00d39794a7061..6183b68910b84 100644
--- a/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracingOptions.java
+++ b/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracingOptions.java
@@ -40,10 +40,10 @@ TracerProvider getOpenTelemetryProvider() {
*
* // configure OpenTelemetry SDK explicitly per https://opentelemetry.io/docs/instrumentation/java/manual/
* SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
- * .addSpanProcessor(SimpleSpanProcessor.create(LoggingSpanExporter.create()))
+ * .addSpanProcessor(BatchSpanProcessor.builder(LoggingSpanExporter.create()).build())
* .build();
*
- * OpenTelemetry openTelemetry = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
+ * OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
* // Pass OpenTelemetry container to TracingOptions.
* TracingOptions customTracingOptions = new OpenTelemetryTracingOptions()
* .setOpenTelemetry(openTelemetry);