32 lines
878 B
Go
32 lines
878 B
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
"github.com/go-kratos/kratos/v2/log"
|
|
"github.com/tx7do/kratos-transport/transport/kafka"
|
|
"sandc/app/eonline/internal/biz"
|
|
"sandc/app/eonline/internal/conf"
|
|
)
|
|
|
|
// NewKafkaServer new a kafka server.
|
|
func NewKafkaServer(c *conf.Queue, uc *biz.EonlineUsecase, logger log.Logger) *kafka.Server {
|
|
opts := []kafka.ServerOption{
|
|
kafka.WithAddress(c.Kafka.Addrs),
|
|
kafka.WithCodec("json"),
|
|
kafka.WithGlobalTracerProvider(),
|
|
}
|
|
if c.Kafka.Username != "" && c.Kafka.Password != "" {
|
|
opts = append(opts, kafka.WithPlainMechanism(c.Kafka.Username, c.Kafka.Password))
|
|
}
|
|
kafkaSrv := kafka.NewServer(opts...)
|
|
err := kafkaSrv.RegisterSubscriber(
|
|
context.Background(), c.Kafka.Topic, c.Kafka.Group, false,
|
|
biz.RegisterExampleHandler(uc.KakfaExampleConsumer),
|
|
biz.ExampleCreator,
|
|
)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
return kafkaSrv
|
|
}
|