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

34 lines
713 B
Go

package kafka
import (
"context"
"github.com/IBM/sarama"
"go.opentelemetry.io/otel"
otelcodes "go.opentelemetry.io/otel/codes"
)
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: NewCarrier().Inject(ctx),
}
client.producer.Input() <- msg
}
func producerError() {
for err := range client.producer.Errors() {
ctx := NewCarrier().ExtractProducer(err.Msg.Headers)
_, span := otel.Tracer(client.serverName).Start(ctx, "kafka.producer")
span.SetStatus(otelcodes.Error, err.Error())
span.End()
}
}