Files
service-common/db/kafka/producer.go

38 lines
849 B
Go

package kafka
import (
"context"
"git.hlsq.asia/mmorpg/service-common/log"
"github.com/IBM/sarama"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/propagation"
)
func NewProducer() *Producer {
return &Producer{}
}
type Producer struct {
}
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)})
}
client.producer.Input() <- msg
}
func producerError() {
for err := range client.producer.Errors() {
log.Errorf("kafka producer error: %v", err)
}
}