@@ -94,6 +94,50 @@ This property makes it possible to:
94
94
- deploy a new SDK shared library
95
95
- keep the application unchanged
96
96
97
+ ### Case study, using Factory and shared gRPC client between OTLP gRPC exporters
98
+
99
+ To reduce the cost of gRPC, the SDK allow users to share gRPC clients between
100
+ OTLP gRPC exporters when these exporters have the same settings. This can be
101
+ used as follows from the application code:
102
+
103
+ ```cpp
104
+ // Include following headers
105
+ #include "opentelemetry/exporters/otlp/otlp_grpc_client_factory.h"
106
+ #include "opentelemetry/exporters/otlp/otlp_grpc_exporter_factory.h"
107
+ #include "opentelemetry/exporters/otlp/otlp_grpc_exporter_options.h"
108
+ #include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_factory.h"
109
+ #include "opentelemetry/exporters/otlp/otlp_grpc_log_record_exporter_options.h"
110
+
111
+ // Create exporters with shared gRPC Client
112
+ namespace otlp = opentelemetry::exporter::otlp;
113
+
114
+ void SetupOtlp() {
115
+ otlp::OtlpGrpcClientOptions client_opts;
116
+ otlp::OtlpGrpcExporterOptions trace_opts;
117
+ otlp::OtlpGrpcLogRecordExporterOptions log_opts;
118
+
119
+ // Setting client_opts, trace_opts and log_opts
120
+ // client_opts.endpoint = "localhost:1234";
121
+ // Or we can use client_opts = trace_opts; to copy options from environment of
122
+ // trace OTLP exporter.
123
+
124
+ std::shared_ptr<otlp::OtlpGrpcClient> shared_client =
125
+ otlp::OtlpGrpcClientFactory::Create(client_opts);
126
+
127
+ // Create exporters
128
+ auto trace_exporter =
129
+ otlp::OtlpGrpcExporterFactory::Create(trace_opts, shared_client);
130
+ auto log_exporter =
131
+ otlp::OtlpGrpcLogRecordExporterFactory::Create(log_opts, shared_client);
132
+
133
+ // Other initialization codes ...
134
+ }
135
+ ```
136
+
137
+ Be careful, create OTLP exporters with an existing ` OtlpGrpcClient ` will ignore
138
+ the options of gRPC when passing the ` OtlpGrpcExporterOptions ` or other option
139
+ object.
140
+
97
141
## SDK extension
98
142
99
143
Applications owners who want to extend existing SDK classes are expected
0 commit comments