Mateusz Rzeszutek e3944a53a5 Make net.transport an optional attribute (#8279) 1 år sedan
..
src e3944a53a5 Make net.transport an optional attribute (#8279) 1 år sedan
README.md a6bc3b197d Add R2dbc statement javaagent instrumentation (#7977) 2 år sedan
build.gradle.kts 9e0d177d88 Add testcontainersBuildService to r2dbc tests (#8184) 1 år sedan

README.md

Library Instrumentation for R2dbc version 1.0 and higher

Provides OpenTelemetry instrumentation for R2dbc.

Quickstart

Add these dependencies to your project

Replace OPENTELEMETRY_VERSION with the latest release.

For Maven, add to your pom.xml dependencies:

<dependencies>
  <dependency>
    <groupId>io.opentelemetry.instrumentation</groupId>
    <artifactId>opentelemetry-r2dbc-1.0</artifactId>
    <version>OPENTELEMETRY_VERSION</version>
  </dependency>
</dependencies>

For Gradle, add to your dependencies:

implementation("io.opentelemetry.instrumentation:opentelemetry-r2dbc-1.0:OPENTELEMETRY_VERSION")

Usage

The instrumentation library provides a R2dbc ProxyConnectionFactory that gets wrapped around the original ConnectionFactory.

ConnectionFactory wrapWithProxyFactory(OpenTelemetry openTelemetry, ConnectionFactory originalFactory, ConnectionFactoryOptions factoryOptions) {
  return R2dbcTelemetryBuilder
    .create(openTelemetry)
    .wrapConnectionFactory(originalFactory, factoryOptions);
}

If you use R2dbc in a Spring application you can wrap the ConnectionFactory in the ConnectionFactoryInitializer Bean:

@Bean
ConnectionFactoryInitializer initializer(OpenTelemetry openTelemetry, ConnectionFactory connectionFactory) {
    ConnectionFactoryInitializer initializer = new ConnectionFactoryInitializer();
    ConnectionFactoryOptions factoryOptions = ConnectionFactoryOptions.parse("r2dbc:mariadb://localhost:3306/db");
    initializer.setConnectionFactory(wrapWithProxyFactory(openTelemetry, connectionFactory, factoryOptions));
    return initializer;
}