From 10c65da3d2af7056f48d9301e83f53f102f76e18 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 30 十月 2023 14:52:11 +0800 Subject: [PATCH] fix --- nsq/nsq.go | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-) diff --git a/nsq/nsq.go b/nsq/nsq.go index 06e78e5..68274b2 100644 --- a/nsq/nsq.go +++ b/nsq/nsq.go @@ -10,11 +10,13 @@ "errors" "fmt" "sync" + "sync/atomic" ) type consumerManager struct { - ctx context.Context - clients sync.Map + ctx context.Context + clients sync.Map + initFlag int32 } var defaultConsumerManager *consumerManager @@ -27,13 +29,14 @@ if len(conf.Conf.NsqConf.NodeId) <= 0 { return errors.New("no NodeId") } + if !atomic.CompareAndSwapInt32(&c.initFlag, 0, 1) { + return nil + } if err := initProducer(); err != nil { return err } - var topics = []string{ constvar.NsqTopicScheduleTask, - constvar.NsqTopicSendPlcAddress, constvar.NsqTopicApsProcessParams, constvar.NsqTopicDeviceUpdate, constvar.NsqTopicPullDataResponse, @@ -68,6 +71,9 @@ } func (c *consumerManager) stop() { + if !atomic.CompareAndSwapInt32(&c.initFlag, 1, 0) { + return + } c.clients.Range(func(key, value any) bool { if consumer, ok := value.(*nsqclient.NsqConsumer); ok { nsqclient.DestroyNsqConsumer(consumer) @@ -85,4 +91,5 @@ func Stop() { defaultConsumerManager.stop() + StopProducer() } -- Gitblit v1.8.0