Skip to content

Commit 3694ff9

Browse files
authored
Modify OTLP Http example to use reqwest blocking (#2460)
1 parent f911ed5 commit 3694ff9

File tree

3 files changed

+11
-21
lines changed

3 files changed

+11
-21
lines changed

opentelemetry-otlp/examples/basic-otlp-http/Cargo.toml

+2-4
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ license = "Apache-2.0"
66
publish = false
77

88
[features]
9-
default = ["reqwest", "experimental_metrics_periodicreader_with_async_runtime"]
10-
reqwest = ["opentelemetry-otlp/reqwest-client"]
9+
default = ["reqwest-blocking"]
10+
reqwest-blocking = ["opentelemetry-otlp/reqwest-blocking-client"]
1111
hyper = ["opentelemetry-otlp/hyper-client"]
12-
experimental_metrics_periodicreader_with_async_runtime = ["opentelemetry_sdk/experimental_metrics_periodicreader_with_async_runtime"]
13-
1412

1513
[dependencies]
1614
once_cell = { workspace = true }

opentelemetry-otlp/examples/basic-otlp-http/README.md

+2-4
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@ applications, these filters should be adjusted appropriately.
1313

1414
The example employs a `BatchExporter` for logs and traces, which is the
1515
recommended approach when using OTLP exporters. While it can be modified to use
16-
a `SimpleExporter`, this requires enabling feature flag `reqwest-blocking-client` and
17-
making the `main()` a normal main and *not* `tokio::main`
16+
a `SimpleExporter`, this requires making the main function a regular main and
17+
*not* tokio main.
1818

19-
// TODO: Metrics does not work with non tokio main when using `reqwest-blocking-client` today, fix that when switching
20-
// default to use own thread.
2119
// TODO: Document `hyper` feature flag when using SimpleProcessor.
2220

2321
## Usage

opentelemetry-otlp/examples/basic-otlp-http/src/main.rs

+7-13
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use opentelemetry_otlp::{LogExporter, MetricExporter, Protocol, SpanExporter};
1111
use opentelemetry_sdk::{
1212
logs::LoggerProvider,
1313
metrics::{MetricError, SdkMeterProvider},
14-
runtime,
1514
trace::{self as sdktrace, TracerProvider},
1615
};
1716
use opentelemetry_sdk::{
@@ -50,7 +49,9 @@ fn init_traces() -> Result<sdktrace::TracerProvider, TraceError> {
5049
.build()?;
5150

5251
Ok(TracerProvider::builder()
53-
.with_batch_exporter(exporter, runtime::Tokio)
52+
// TODO: Enable BatchExporter after
53+
// https://github.com/open-telemetry/opentelemetry-rust/pull/2456
54+
.with_simple_exporter(exporter)
5455
.with_resource(RESOURCE.clone())
5556
.build())
5657
}
@@ -62,15 +63,6 @@ fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, Metric
6263
.with_endpoint("http://localhost:4318/v1/metrics")
6364
.build()?;
6465

65-
#[cfg(feature = "experimental_metrics_periodicreader_with_async_runtime")]
66-
let reader =
67-
opentelemetry_sdk::metrics::periodic_reader_with_async_runtime::PeriodicReader::builder(
68-
exporter,
69-
runtime::Tokio,
70-
)
71-
.build();
72-
// TODO: This does not work today. See https://github.com/open-telemetry/opentelemetry-rust/issues/2400
73-
#[cfg(not(feature = "experimental_metrics_periodicreader_with_async_runtime"))]
7466
let reader = opentelemetry_sdk::metrics::PeriodicReader::builder(exporter).build();
7567

7668
Ok(SdkMeterProvider::builder()
@@ -79,8 +71,10 @@ fn init_metrics() -> Result<opentelemetry_sdk::metrics::SdkMeterProvider, Metric
7971
.build())
8072
}
8173

82-
#[tokio::main]
83-
async fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
74+
// #[tokio::main]
75+
// TODO: Re-enable tokio::main, if needed, after
76+
// https://github.com/open-telemetry/opentelemetry-rust/pull/2456
77+
fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
8478
let logger_provider = init_logs()?;
8579

8680
// Create a new OpenTelemetryTracingBridge using the above LoggerProvider.

0 commit comments

Comments
 (0)