# Apache Pulsar Client

<!-- llms-txt-link: /llms.txt -->

> OpenTelemetry Java agent instrumentation

This instrumentation enables messaging spans for Apache Pulsar message producers and consumers.

- **Name**: `pulsar-2.8`
- **Scope**: `io.opentelemetry.pulsar-2.8`
- **Target versions**: `org.apache.pulsar:pulsar-client:[2.8.0,)`
- **Library**: https://pulsar.apache.org/

## Telemetry

- **Metrics**: `messaging.publish.duration`, `messaging.receive.duration`, `messaging.receive.messages`
- **Span attributes**: `messaging.batch.message_count`, `messaging.destination.name`, `messaging.destination.partition.id`, `messaging.message.body.size`, `messaging.message.id`, `messaging.operation`, `messaging.system`, `server.address`, `server.port`, `messaging.pulsar.message.type`

## Configuration

| Option | Type | Default | Description |
| --- | --- | --- | --- |
| `otel.instrumentation.messaging.experimental.capture-headers` | list |  | A comma-separated list of header names to capture as span attributes. |
| `otel.instrumentation.messaging.experimental.receive-telemetry.enabled` | boolean | false | Enables experimental receive telemetry, which will cause consumers to start a new trace, with only a span link connecting it to the producer trace. |
| `otel.instrumentation.pulsar.experimental-span-attributes` | boolean | false | Enables the experimental span attribute `messaging.pulsar.message.type` for producer spans. |

## Data

- **JSON**: [/data/javaagent/instrumentations/pulsar-2.8/pulsar-2.8-52e7bef49f1b.json](/data/javaagent/instrumentations/pulsar-2.8/pulsar-2.8-52e7bef49f1b.json)
- **Explore**: [/java-agent/instrumentation/pulsar-2.8](/java-agent/instrumentation/pulsar-2.8)
