feat kafka

This commit is contained in:
2026-01-24 21:46:14 +08:00
parent 4d661d0813
commit b45df9c4ee
3 changed files with 48 additions and 16 deletions

View File

@@ -2,10 +2,9 @@ package kafka
import (
"context"
"git.hlsq.asia/mmorpg/service-common/log"
"github.com/IBM/sarama"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/propagation"
otelcodes "go.opentelemetry.io/otel/codes"
)
func NewProducer() *Producer {
@@ -19,19 +18,16 @@ func (c *Producer) Produce(ctx context.Context, topic, value string) {
msg := &sarama.ProducerMessage{
Topic: topic,
Value: sarama.StringEncoder(value),
Headers: make([]sarama.RecordHeader, 0),
}
// 注入链路信息
carrier := propagation.MapCarrier{}
otel.GetTextMapPropagator().Inject(ctx, carrier)
for k, v := range carrier {
msg.Headers = append(msg.Headers, sarama.RecordHeader{Key: []byte(k), Value: []byte(v)})
Headers: NewCarrier().Inject(ctx),
}
client.producer.Input() <- msg
}
func producerError() {
for err := range client.producer.Errors() {
log.Errorf("kafka producer error: %v", err)
ctx := NewCarrier().ExtractProducer(err.Msg.Headers)
_, span := otel.Tracer(client.serverName).Start(ctx, "kafka.producer")
span.SetStatus(otelcodes.Error, err.Error())
span.End()
}
}