feat kafka

This commit is contained in:
2026-01-24 22:46:15 +08:00
parent b45df9c4ee
commit 81e422d304
4 changed files with 9 additions and 15 deletions

View File

@@ -9,12 +9,11 @@ import (
var client *Client var client *Client
type Client struct { type Client struct {
producer sarama.AsyncProducer producer sarama.AsyncProducer
consumer sarama.ConsumerGroup consumer sarama.ConsumerGroup
serverName string
} }
func Init(cfg *config.KafkaConfig, serverName string) error { func Init(cfg *config.KafkaConfig) error {
producer, err := getAsyncProducer(cfg) producer, err := getAsyncProducer(cfg)
if err != nil { if err != nil {
return err return err
@@ -24,9 +23,8 @@ func Init(cfg *config.KafkaConfig, serverName string) error {
return err return err
} }
client = &Client{ client = &Client{
producer: producer, producer: producer,
consumer: consumer, consumer: consumer,
serverName: serverName,
} }
go producerError() go producerError()
go consumerError() go consumerError()

View File

@@ -63,7 +63,7 @@ func (h *handler) Cleanup(sess sarama.ConsumerGroupSession) error {
func (h *handler) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error { func (h *handler) ConsumeClaim(sess sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error {
for message := range claim.Messages() { for message := range claim.Messages() {
ctx := NewCarrier().ExtractConsumer(message.Headers) ctx := NewCarrier().ExtractConsumer(message.Headers)
_, span := otel.Tracer(client.serverName).Start(ctx, "kafka.consume") _, span := otel.Tracer("common.db.kafka").Start(ctx, "kafka.consume")
if err := h.handler(ctx, message); err != nil { if err := h.handler(ctx, message); err != nil {
if stack, ok := err.(interface{ StackTrace() string }); ok { if stack, ok := err.(interface{ StackTrace() string }); ok {
span.AddEvent("Stack Trace", trace.WithAttributes( span.AddEvent("Stack Trace", trace.WithAttributes(

View File

@@ -26,7 +26,7 @@ func (c *Producer) Produce(ctx context.Context, topic, value string) {
func producerError() { func producerError() {
for err := range client.producer.Errors() { for err := range client.producer.Errors() {
ctx := NewCarrier().ExtractProducer(err.Msg.Headers) ctx := NewCarrier().ExtractProducer(err.Msg.Headers)
_, span := otel.Tracer(client.serverName).Start(ctx, "kafka.producer") _, span := otel.Tracer("common.db.kafka").Start(ctx, "kafka.producer.error")
span.SetStatus(otelcodes.Error, err.Error()) span.SetStatus(otelcodes.Error, err.Error())
span.End() span.End()
} }

View File

@@ -12,8 +12,7 @@ import (
// DB 数据库模块 // DB 数据库模块
type DB struct { type DB struct {
DefaultModule DefaultModule
cfg *config.DBConfig cfg *config.DBConfig
serviceName string
} }
func (m *DB) Init() error { func (m *DB) Init() error {
@@ -37,7 +36,7 @@ func (m *DB) Init() error {
} }
// KAFKA // KAFKA
if m.cfg.Kafka != nil { if m.cfg.Kafka != nil {
if err := kafka.Init(m.cfg.Kafka, m.serviceName); err != nil { if err := kafka.Init(m.cfg.Kafka); err != nil {
return err return err
} }
} }
@@ -67,8 +66,5 @@ func (m *DB) Bind(data ...any) Module {
if cfg, ok := data[0].(*config.DBConfig); ok { if cfg, ok := data[0].(*config.DBConfig); ok {
m.cfg = cfg m.cfg = cfg
} }
if name, ok := data[1].(string); ok {
m.serviceName = name
}
return m return m
} }