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