feat kafka
This commit is contained in:
41
db/kafka/carrier.go
Normal file
41
db/kafka/carrier.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package kafka
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/IBM/sarama"
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/propagation"
|
||||
)
|
||||
|
||||
type Carrier struct {
|
||||
}
|
||||
|
||||
func NewCarrier() *Carrier {
|
||||
return &Carrier{}
|
||||
}
|
||||
|
||||
func (c *Carrier) Inject(ctx context.Context) []sarama.RecordHeader {
|
||||
headers := make([]sarama.RecordHeader, 0)
|
||||
carrier := propagation.MapCarrier{}
|
||||
otel.GetTextMapPropagator().Inject(ctx, carrier)
|
||||
for k, v := range carrier {
|
||||
headers = append(headers, sarama.RecordHeader{Key: []byte(k), Value: []byte(v)})
|
||||
}
|
||||
return headers
|
||||
}
|
||||
|
||||
func (c *Carrier) ExtractConsumer(headers []*sarama.RecordHeader) context.Context {
|
||||
carrier := propagation.MapCarrier{}
|
||||
for _, header := range headers {
|
||||
carrier[string(header.Key)] = string(header.Value)
|
||||
}
|
||||
return otel.GetTextMapPropagator().Extract(context.Background(), carrier)
|
||||
}
|
||||
|
||||
func (c *Carrier) ExtractProducer(headers []sarama.RecordHeader) context.Context {
|
||||
carrier := propagation.MapCarrier{}
|
||||
for _, header := range headers {
|
||||
carrier[string(header.Key)] = string(header.Value)
|
||||
}
|
||||
return otel.GetTextMapPropagator().Extract(context.Background(), carrier)
|
||||
}
|
||||
Reference in New Issue
Block a user