init
This commit is contained in:
44
logic/dao/kafka.go
Normal file
44
logic/dao/kafka.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user