KafkaConsumerObservationHandler_Introduction - italoag/wallet GitHub Wiki
KafkaConsumerObservationHandler - Quick Reference
Executive Summary
The KafkaConsumerObservationHandler is a Spring Boot component that provides distributed tracing for Kafka message consumption in the Wallet Hub application. It creates detailed observability spans for every Kafka consumer operation, enabling end-to-end trace visibility across event-driven workflows.
Key Benefits
🎯 Observability
Consumer Lag Tracking: Measures time between message production and consumption
Processing Metrics: Captures deserialization and processing durations
Error Diagnostics: Records detailed error context for troubleshooting
Trace Continuity: Maintains distributed trace context across service boundaries
⚡ Performance
Low Overhead: <1ms per message impact
Feature Flag Control: Can be disabled via tracing.features.kafka
Efficient Attributes: Uses low-cardinality attributes for optimal performance
Async Export: Spans exported asynchronously to tracing backends
🔧 Integration
Spring Cloud Stream: Native integration with Spring's messaging abstraction
OpenTelemetry Compliance: Follows semantic conventions for messaging systems
CloudEvents Support: Works with CloudEvent trace context propagation
Multi-Backend Export: Supports Tempo (OTLP) and Zipkin backends
// The handler automatically adds standard attributes// For custom business attributes, use SpanAttributeBuilder:@AutowiredprivateSpanAttributeBuilderspanAttributeBuilder;
// In consumer logic:spanAttributeBuilder.addWalletOperationAttributes(
span, walletId, "funds_added", transactionId, amount, currency);
Performance Optimization Tips
For High-Volume Systems
Enable Sampling: Set management.tracing.sampling.probability=0.01 (1%)
Disable Non-Critical: Turn off tracing for low-value topics
Monitor Memory: Watch for span accumulation during backpressure
Use Async Processing: Ensure span export doesn't block consumer threads
For Latency-Sensitive Applications
Disable Tracing: Set tracing.features.kafka=false for critical paths
Minimal Attributes: Use only essential span attributes
Batch Processing: Aggregate spans for batch consumers
Local Testing: Profile overhead in test environment