This commit is contained in:
2022-03-17 15:55:27 +08:00
commit bd5a9fad97
92 changed files with 13861 additions and 0 deletions

44
logic/dao/kafka.go Normal file
View File

@@ -0,0 +1,44 @@
package dao
import (
"context"
"fmt"
"github.com/opentracing/opentracing-go"
"gitlab.33.cn/chat/im-pkg/trace"
comet "gitlab.33.cn/chat/im/api/comet/grpc"
"github.com/golang/protobuf/proto"
"github.com/rs/zerolog/log"
pb "gitlab.33.cn/chat/im/api/logic/grpc"
"gopkg.in/Shopify/sarama.v1"
)
// PushMsg push a message to databus.
func (d *Dao) PublishMsg(ctx context.Context, appId string, fromId string, op comet.Op, key string, msg []byte) (err error) {
tracer := opentracing.GlobalTracer()
span, ctx := opentracing.StartSpanFromContextWithTracer(ctx, tracer, fmt.Sprintf("Publish -%v-%v", appId, op.String()))
defer span.Finish()
pushMsg := &pb.BizMsg{
AppId: appId,
FromId: fromId,
Op: int32(op),
Key: key,
Msg: msg,
}
b, err := proto.Marshal(pushMsg)
if err != nil {
return
}
appTopic := fmt.Sprintf("goim-%s-topic", appId)
m := &sarama.ProducerMessage{
Key: sarama.StringEncoder(fromId),
Topic: appTopic,
Value: sarama.ByteEncoder(b),
}
trace.InjectMQHeader(tracer, span.Context(), ctx, m)
if _, _, err = d.kafkaPub.SendMessage(m); err != nil {
log.Error().Interface("pushMsg", pushMsg).Err(err).Msg("kafkaPub.SendMessage error")
}
return
}