From 7276ab65576ec73b439a40d7f1a3035a534b968c Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期五, 20 十月 2023 19:12:40 +0800
Subject: [PATCH] 停止消费时关闭tcp连接

---
 pkg/nsqclient/consumer.go |   12 ++++++++++--
 nsq/nsq.go                |    2 +-
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/nsq/nsq.go b/nsq/nsq.go
index c2eb366..06e78e5 100644
--- a/nsq/nsq.go
+++ b/nsq/nsq.go
@@ -73,8 +73,8 @@
 			nsqclient.DestroyNsqConsumer(consumer)
 			logx.Infof("try stop consumer, topic : %v", key)
 			consumer = nil
+			c.clients.Delete(key)
 		}
-
 		return true
 	})
 }
diff --git a/pkg/nsqclient/consumer.go b/pkg/nsqclient/consumer.go
index 644fba3..fe09c27 100644
--- a/pkg/nsqclient/consumer.go
+++ b/pkg/nsqclient/consumer.go
@@ -90,10 +90,18 @@
 	for {
 		select {
 		case <-n.ctx.Done():
-			logx.Infof("[%s]%s stop consumer...", n.topic, n.channel)
+			logx.Infof("[%s] stop consumer...", n.topic)
 			n.consumer.Stop()
 			<-n.consumer.StopChan
-			logx.Infof("[%s]%s stop consumer success", n.topic, n.channel)
+			logx.Infof("[%s] stop consumer success", n.topic)
+			for _, addr := range qAddr {
+				err = n.consumer.DisconnectFromNSQD(addr)
+				if err != nil {
+					logx.Errorf("disconnect from nsq server failed, err: %v, addr: %v, topic: %v", err, addr, n.topic)
+				} else {
+					logx.Infof("disconnect from nsq server success, addr: %v, topic: %v", addr, n.topic)
+				}
+			}
 			return nil
 		}
 	}

--
Gitblit v1.8.0