This is an automated email from the ASF dual-hosted git repository.

alexstocks pushed a commit to branch 1.5
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git


The following commit(s) were added to refs/heads/1.5 by this push:
     new fbe3ed4  Ftr: support custom registry group name on nacos for 1.5 
(#1513)
fbe3ed4 is described below

commit fbe3ed4fd93f1d07d81c2f88fc1bbbd7b8f99c21
Author: ChangedenChan <[email protected]>
AuthorDate: Sun Oct 17 12:50:44 2021 +0800

    Ftr: support custom registry group name on nacos for 1.5 (#1513)
    
    * Support Custom Registry GroupName on Nacos
    
    * Support Custom Registry GroupName on Nacos
    
    * 优化参数传递方式
    
    Co-authored-by: Changeden <[email protected]>
---
 common/constant/key.go              |  1 +
 registry/nacos/listener.go          |  7 ++++++-
 registry/nacos/registry.go          | 15 +++++++++++----
 registry/nacos/service_discovery.go |  3 +++
 registry/service_instance.go        |  1 +
 5 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/common/constant/key.go b/common/constant/key.go
index 731fcd1..bd161ab 100644
--- a/common/constant/key.go
+++ b/common/constant/key.go
@@ -111,6 +111,7 @@ const (
        ZONE_KEY             = "zone"
        ZONE_FORCE_KEY       = "zone.force"
        REGISTRY_TTL_KEY     = "registry.ttl"
+       REGISTRY_GROUP_KEY   = "registry.group"
 )
 
 const (
diff --git a/registry/nacos/listener.go b/registry/nacos/listener.go
index df33c58..5557f87 100644
--- a/registry/nacos/listener.go
+++ b/registry/nacos/listener.go
@@ -188,7 +188,12 @@ func (nl *nacosListener) startListen() error {
                return perrors.New("nacos naming namingClient stopped")
        }
        serviceName := getSubscribeName(nl.listenUrl)
-       nl.subscribeParam = &vo.SubscribeParam{ServiceName: serviceName, 
SubscribeCallback: nl.Callback}
+       groupName := nl.listenUrl.GetParam(constant.REGISTRY_GROUP_KEY, 
defaultGroup)
+       nl.subscribeParam = &vo.SubscribeParam{
+               ServiceName:       serviceName,
+               SubscribeCallback: nl.Callback,
+               GroupName:         groupName,
+       }
        go func() {
                _ = nl.namingClient.Client().Subscribe(nl.subscribeParam)
        }()
diff --git a/registry/nacos/registry.go b/registry/nacos/registry.go
index e5dde7e..09f7ad9 100644
--- a/registry/nacos/registry.go
+++ b/registry/nacos/registry.go
@@ -83,7 +83,7 @@ func appendParam(target *bytes.Buffer, url *common.URL, key 
string) {
        }
 }
 
-func createRegisterParam(url *common.URL, serviceName string) 
vo.RegisterInstanceParam {
+func createRegisterParam(url *common.URL, serviceName string, groupName 
string) vo.RegisterInstanceParam {
        category := getCategory(url)
        params := make(map[string]string)
 
@@ -111,6 +111,7 @@ func createRegisterParam(url *common.URL, serviceName 
string) vo.RegisterInstanc
                Healthy:     true,
                Ephemeral:   true,
                ServiceName: serviceName,
+               GroupName:   groupName,
        }
        return instance
 }
@@ -118,7 +119,8 @@ func createRegisterParam(url *common.URL, serviceName 
string) vo.RegisterInstanc
 // Register will register the service @url to its nacos registry center
 func (nr *nacosRegistry) Register(url *common.URL) error {
        serviceName := getServiceName(url)
-       param := createRegisterParam(url, serviceName)
+       groupName := nr.URL.GetParam(constant.GROUP_KEY, defaultGroup)
+       param := createRegisterParam(url, serviceName, groupName)
        isRegistry, err := nr.namingClient.Client().RegisterInstance(param)
        if err != nil {
                return err
@@ -130,7 +132,7 @@ func (nr *nacosRegistry) Register(url *common.URL) error {
        return nil
 }
 
-func createDeregisterParam(url *common.URL, serviceName string) 
vo.DeregisterInstanceParam {
+func createDeregisterParam(url *common.URL, serviceName string, groupName 
string) vo.DeregisterInstanceParam {
        if len(url.Ip) == 0 {
                url.Ip = localIP
        }
@@ -142,13 +144,15 @@ func createDeregisterParam(url *common.URL, serviceName 
string) vo.DeregisterIns
                Ip:          url.Ip,
                Port:        uint64(port),
                ServiceName: serviceName,
+               GroupName:   groupName,
                Ephemeral:   true,
        }
 }
 
 func (nr *nacosRegistry) DeRegister(url *common.URL) error {
        serviceName := getServiceName(url)
-       param := createDeregisterParam(url, serviceName)
+       groupName := nr.URL.GetParam(constant.GROUP_KEY, defaultGroup)
+       param := createDeregisterParam(url, serviceName, groupName)
        isDeRegistry, err := nr.namingClient.Client().DeregisterInstance(param)
        if err != nil {
                return err
@@ -181,6 +185,9 @@ func (nr *nacosRegistry) Subscribe(url *common.URL, 
notifyListener registry.Noti
                        return perrors.New("nacosRegistry is not available.")
                }
 
+               groupName := nr.GetParam(constant.GROUP_KEY, defaultGroup)
+               url.SetParam(constant.REGISTRY_GROUP_KEY, groupName) // update 
to registry.group
+
                listener, err := nr.subscribe(url)
                if err != nil {
                        if !nr.IsAvailable() {
diff --git a/registry/nacos/service_discovery.go 
b/registry/nacos/service_discovery.go
index 4ced60d..dc2caa5 100644
--- a/registry/nacos/service_discovery.go
+++ b/registry/nacos/service_discovery.go
@@ -160,6 +160,7 @@ func (n *nacosServiceDiscovery) GetInstances(serviceName 
string) []registry.Serv
                        Enable:      ins.Enable,
                        Healthy:     ins.Healthy,
                        Metadata:    metadata,
+                       GroupName:   n.group,
                })
        }
 
@@ -215,6 +216,7 @@ func (n *nacosServiceDiscovery) 
GetRequestInstances(serviceNames []string, offse
 func (n *nacosServiceDiscovery) AddListener(listener 
*registry.ServiceInstancesChangedListener) error {
        return n.namingClient.Client().Subscribe(&vo.SubscribeParam{
                ServiceName: listener.ServiceName,
+               GroupName:   n.group,
                SubscribeCallback: func(services []model.SubscribeService, err 
error) {
                        if err != nil {
                                logger.Errorf("Could not handle the subscribe 
notification because the err is not nil."+
@@ -236,6 +238,7 @@ func (n *nacosServiceDiscovery) AddListener(listener 
*registry.ServiceInstancesC
                                        Enable:      service.Enable,
                                        Healthy:     true,
                                        Metadata:    metadata,
+                                       GroupName:   n.group,
                                })
                        }
 
diff --git a/registry/service_instance.go b/registry/service_instance.go
index 43a1640..58d700b 100644
--- a/registry/service_instance.go
+++ b/registry/service_instance.go
@@ -56,6 +56,7 @@ type DefaultServiceInstance struct {
        Enable      bool
        Healthy     bool
        Metadata    map[string]string
+       GroupName   string
 }
 
 // GetId will return this instance's id. It should be unique.

Reply via email to