From 93913145516ca22c3c139532457be9cb0b510be5 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期六, 21 十月 2023 14:50:45 +0800 Subject: [PATCH] nsqq启停幂等性操作 --- nsq/producer.go | 13 ++++++++++++- nsq/nsq.go | 3 +++ 2 files changed, 15 insertions(+), 1 deletions(-) diff --git a/nsq/nsq.go b/nsq/nsq.go index 847da9a..c8f7650 100644 --- a/nsq/nsq.go +++ b/nsq/nsq.go @@ -72,6 +72,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) diff --git a/nsq/producer.go b/nsq/producer.go index 2f1e947..ade2e2f 100644 --- a/nsq/producer.go +++ b/nsq/producer.go @@ -4,19 +4,30 @@ "apsClient/conf" "apsClient/pkg/logx" "apsClient/pkg/nsqclient" + "sync/atomic" ) -var producer nsqclient.Producer +var ( + producer nsqclient.Producer + initFlag int32 +) func GetProducer() nsqclient.Producer { return producer } func StopProducer() { + if !atomic.CompareAndSwapInt32(&initFlag, 1, 0) { + return + } nsqclient.DestroyProducerPool() } func initProducer() (err error) { + if !atomic.CompareAndSwapInt32(&initFlag, 0, 1) { + return nil + } + producer, err = nsqclient.NewProducer(conf.Conf.NsqConf.NsqdAddr) if err != nil { logx.Errorf("NewProducer err:%v", err) -- Gitblit v1.8.0