Skip to content

Conversation

@slukes
Copy link

@slukes slukes commented Nov 17, 2025

The batch consumer plugin was only handling Data Streams Monitoring (DSM) but not creating APM trace spans. This adds the missing bindStart() method to create spans for eachBatch callbacks, similar to how the regular consumer plugin creates spans for eachMessage callbacks.

Changes:

  • Add bindStart() method to create APM trace spans for batch consumption
  • Extract parent context from first message headers for distributed tracing
  • Add span tags: kafka.topic, kafka.partition, kafka.batch_size
  • Add kafka.first_offset and kafka.last_offset tags for batch boundaries
  • Set span resource to topic name and type to 'worker'
  • Integrate DSM checkpoints with APM spans (pass span to setCheckpoint)
  • Add comprehensive test coverage for batch consumer APM tracing

This fix ensures that batch consumer operations are properly traced in APM, providing visibility into batch consumption performance and enabling distributed tracing across Kafka producers and consumers.

Fixes missing APM spans for @confluentinc/kafka-javascript and kafkajs batch consumers when using eachBatch callbacks.

What does this PR do?

Motivation

Plugin Checklist

Additional Notes

The batch consumer plugin was only handling Data Streams Monitoring
(DSM) but not creating APM trace spans. This adds the missing bindStart()
method to create spans for eachBatch callbacks, similar to how the
regular consumer plugin creates spans for eachMessage callbacks.

Changes:
- Add bindStart() method to create APM trace spans for batch consumption
- Extract parent context from first message headers for distributed tracing
- Add span tags: kafka.topic, kafka.partition, kafka.batch_size
- Add kafka.first_offset and kafka.last_offset tags for batch boundaries
- Set span resource to topic name and type to 'worker'
- Integrate DSM checkpoints with APM spans (pass span to setCheckpoint)
- Add comprehensive test coverage for batch consumer APM tracing

This fix ensures that batch consumer operations are properly traced
in APM, providing visibility into batch consumption performance and
enabling distributed tracing across Kafka producers and consumers.

Fixes missing APM spans for @confluentinc/kafka-javascript and kafkajs
batch consumers when using eachBatch callbacks.
@slukes slukes requested review from a team as code owners November 17, 2025 21:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant