fix: stabilize kafka queue startup
This commit is contained in:
@@ -55,7 +55,7 @@ func consumerListen(ctx context.Context, job Consumer) {
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
Logger().Fatalf(ctx, "InstanceConsumer %s err:%+v", topic, err)
|
||||
Logger().Errorf(ctx, "InstanceConsumer %s err:%+v", topic, err)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -70,6 +70,6 @@ func consumerListen(ctx context.Context, job Consumer) {
|
||||
// 记录消费队列日志
|
||||
ConsumerLog(ctx, topic, mqMsg, err)
|
||||
}); listenErr != nil {
|
||||
Logger().Fatalf(ctx, "消费队列:%s 监听失败, err:%+v", topic, listenErr)
|
||||
Logger().Errorf(ctx, "消费队列:%s 监听失败, err:%+v", topic, listenErr)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ func (d *DiskProducerMq) getProducer(topic string) *disk.Queue {
|
||||
|
||||
func NewDiskQueue(topic string, config *disk.Config) *disk.Queue {
|
||||
conf := &disk.Config{
|
||||
Path: fmt.Sprintf(config.Path + "/" + config.GroupName + "/" + topic),
|
||||
Path: fmt.Sprintf("%s/%s/%s", config.Path, config.GroupName, topic),
|
||||
BatchSize: config.BatchSize,
|
||||
BatchTime: config.BatchTime * time.Second,
|
||||
SegmentSize: config.SegmentSize,
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
"context"
|
||||
"crypto/sha256"
|
||||
"crypto/sha512"
|
||||
"fmt"
|
||||
"hash"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -124,11 +123,16 @@ func (r *KafkaMq) ListenReceiveMsgDo(topic string, receiveDo func(mqMsg MqMsg))
|
||||
go func(consumerCtx context.Context) {
|
||||
for {
|
||||
if err = r.consumerIns.Consume(consumerCtx, []string{topic}, &consumer); err != nil {
|
||||
Logger().Fatalf(ctx, "kafka Error from consumer, err%+v", err)
|
||||
Logger().Errorf(ctx, "kafka error from consumer, topic:%s err:%+v", topic, err)
|
||||
select {
|
||||
case <-consumerCtx.Done():
|
||||
return
|
||||
case <-time.After(3 * time.Second):
|
||||
}
|
||||
}
|
||||
|
||||
if consumerCtx.Err() != nil {
|
||||
Logger().Debugf(ctx, fmt.Sprintf("kafka consoumer stop : %v", consumerCtx.Err()))
|
||||
Logger().Debugf(ctx, "kafka consumer stop : %v", consumerCtx.Err())
|
||||
return
|
||||
}
|
||||
consumer.ready = make(chan bool)
|
||||
@@ -136,14 +140,18 @@ func (r *KafkaMq) ListenReceiveMsgDo(topic string, receiveDo func(mqMsg MqMsg))
|
||||
}(consumerCtx)
|
||||
|
||||
// await till the consumer has been set up
|
||||
<-consumer.ready
|
||||
select {
|
||||
case <-consumer.ready:
|
||||
case <-time.After(10 * time.Second):
|
||||
Logger().Warningf(ctx, "kafka consumer setup timeout, topic:%s", topic)
|
||||
}
|
||||
Logger().Debug(ctx, "kafka consumer up and running!...")
|
||||
|
||||
simple.Event().Register(consts.EventServerClose, func(ctx context.Context, args ...interface{}) {
|
||||
Logger().Debug(ctx, "kafka consumer close...")
|
||||
cancel()
|
||||
if err = r.consumerIns.Close(); err != nil {
|
||||
Logger().Fatalf(ctx, "kafka Error closing client, err:%+v", err)
|
||||
Logger().Errorf(ctx, "kafka error closing client, err:%+v", err)
|
||||
}
|
||||
})
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user