OpenTracing instrumentation for JDBI v2.
pom.xml
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-jdbi</artifactId>
<version>VERSION</version>
</dependency>// Instantiate tracer
Tracer tracer = ...;
// Instatiate DBI
DBI dbi = ...;
// One time only: bind OpenTracing to the DBI instance as a TimingCollector.
// OpenTracingCollector is a Jdbi SqlLogger that creates OpenTracing Spans for each Jdbi SqlStatement.
dbi.setTimingCollector(new OpenTracingCollector(tracer)); //io.opentracing.contrib.**jdbi**.OpenTracingCollector
// Elsewhere, anywhere a `Handle` is available:
Handle handle = ...;
Span parentSpan = ...; // optional
// Create statements as usual with your `handle` instance.
Query<Map<String, Object>> statement = handle.createQuery("SELECT COUNT(*) FROM accounts");
// If a parent Span is available, establish the relationship via setParent.
OpenTracingCollector.setParent(statement, parent);
// Use JDBI as per usual, and Spans will be created for every SQLStatement automatically.
List<Map<String, Object>> results = statement.list();