You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by xi...@apache.org on 2022/07/01 08:46:10 UTC
[incubator-shenyu-client-golang] branch main updated: [Refactor: nacos_client impl sdk_client_factory] (#23)
This is an automated email from the ASF dual-hosted git repository.
xiaoyu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu-client-golang.git
The following commit(s) were added to refs/heads/main by this push:
new 7190bda [Refactor: nacos_client impl sdk_client_factory] (#23)
7190bda is described below
commit 7190bda28877960ff6c776bba85ef6a8b46ab16a
Author: Lisandro <li...@163.com>
AuthorDate: Fri Jul 1 16:46:05 2022 +0800
[Refactor: nacos_client impl sdk_client_factory] (#23)
* [Refactor: nacos_client impl sdk_client_factory]
* [Feature: fix ci lint.]
Co-authored-by: lishuo <li...@mesomia-tech.com>
---
clients/nacos_client/nacos_client.go | 61 +++++++++++++++++++---
common/constants/const.go | 2 +
...k_client_interface.go => sdk_client_factory.go} | 24 +++++----
common/shenyu_sdk_client/sdk_client_interface.go | 2 +-
example/nacos_client/main.go | 56 ++++++++++++++++++--
5 files changed, 122 insertions(+), 23 deletions(-)
diff --git a/clients/nacos_client/nacos_client.go b/clients/nacos_client/nacos_client.go
index 1ed9d6d..c2d978a 100644
--- a/clients/nacos_client/nacos_client.go
+++ b/clients/nacos_client/nacos_client.go
@@ -18,13 +18,20 @@
package nacos_client
import (
- "github.com/nacos-group/nacos-sdk-go/clients"
+ oriNc "github.com/nacos-group/nacos-sdk-go/clients"
"github.com/nacos-group/nacos-sdk-go/clients/naming_client"
"github.com/nacos-group/nacos-sdk-go/common/constant"
"github.com/nacos-group/nacos-sdk-go/vo"
"github.com/wonderivan/logger"
)
+/**
+ * ShenYuNacosClient
+ **/
+type ShenYuNacosClient struct {
+ NacosClient *naming_client.NamingClient
+}
+
/**
* NacosClientParam
**/
@@ -37,14 +44,18 @@ type NacosClientParam struct {
/**
* create nacos client
**/
-func NewNacosClient(ncp *NacosClientParam) (clientProxy naming_client.INamingClient, err error) {
+func (nc *ShenYuNacosClient) NewClient(clientParam interface{}) (client interface{}, createResult bool, err error) {
+ ncp, ok := clientParam.(*NacosClientParam)
+ if !ok {
+ logger.Fatal("init nacos client error %+v:", err)
+ }
checkResult := len(ncp.IpAddr) > 0 && len(ncp.NamespaceId) > 0 && ncp.Port > 0
if checkResult {
client, err := ncp.initNacosClient()
if err != nil {
logger.Fatal("init nacos client error %+v:", err)
}
- return client, nil
+ return client, true, nil
} else {
logger.Fatal("init nacos client param is missing please check")
}
@@ -68,7 +79,7 @@ func (ncp *NacosClientParam) initNacosClient() (clientProxy naming_client.INamin
constant.WithCacheDir("/tmp/nacos/cache"),
)
- client, err := clients.NewNamingClient(
+ client, err := oriNc.NewNamingClient(
vo.NacosClientParam{
ClientConfig: &cc,
ServerConfigs: sc,
@@ -82,13 +93,49 @@ func (ncp *NacosClientParam) initNacosClient() (clientProxy naming_client.INamin
}
/**
- * register nacos instance
+ * Register Instance to Nacos
**/
-func RegisterNacosInstance(client naming_client.INamingClient, rip vo.RegisterInstanceParam) (registerResult bool, err error) {
- registerResult, err = client.RegisterInstance(rip)
+func (nc *ShenYuNacosClient) RegisterServiceInstance(metaData interface{}) (registerResult bool, err error) {
+ rip, ok := metaData.(vo.RegisterInstanceParam)
+ if !ok {
+ logger.Fatal("init nacos client error %+v:", err)
+ }
+ registerResult, err = nc.NacosClient.RegisterInstance(rip)
if err != nil {
logger.Fatal("RegisterServiceInstance failure! ,error is :%+v", err)
}
logger.Info("RegisterServiceInstance,result:%+v\n\n,param:%+v \n\n", registerResult, rip)
return registerResult, nil
}
+
+/**
+ * DeregisterServiceInstance
+ **/
+func (nc *ShenYuNacosClient) DeregisterServiceInstance(metaData interface{}) (registerResult bool, err error) {
+ rip, ok := metaData.(vo.DeregisterInstanceParam)
+ if !ok {
+ logger.Fatal("init nacos client error %+v:", err)
+ }
+ registerResult, err = nc.NacosClient.DeregisterInstance(rip)
+ if err != nil {
+ logger.Fatal("DeregisterServiceInstance failure! ,error is :%+v", err)
+ }
+ logger.Info("DeregisterServiceInstance,result:%+v\n\n,param:%+v \n\n", registerResult, rip)
+ return registerResult, nil
+}
+
+/**
+ * GetServiceInstanceInfo
+ **/
+func (nc *ShenYuNacosClient) GetServiceInstanceInfo(metaData interface{}) (instances interface{}, registerResult bool, err error) {
+ rip, ok := metaData.(vo.SelectInstancesParam)
+ if !ok {
+ logger.Fatal("init nacos client error %+v:", err)
+ }
+ instances, err = nc.NacosClient.SelectInstances(rip)
+ if err != nil {
+ logger.Fatal("GetServiceInstanceInfo failure! ,error is :%+v", err)
+ }
+ logger.Info("GetServiceInstanceInfo,result:%+v\n\n,param:%+v \n\n", instances, rip)
+ return instances, true, nil
+}
diff --git a/common/constants/const.go b/common/constants/const.go
index 8be52db..bb7238a 100644
--- a/common/constants/const.go
+++ b/common/constants/const.go
@@ -26,6 +26,8 @@ const (
DEFAULT_ADMIN_ACCOUNT = "admin"
DEFAULT_REQUEST_TIME = 1000
DEFAULT_ADMIN_SUCCESS = "success"
+ NACOS_CLIENT = "Nacos"
+ ZOOKEEPER_CLIENT = "Zookeeper"
//System default key
ADMIN_USERNAME = "userName"
diff --git a/common/shenyu_sdk_client/sdk_client_interface.go b/common/shenyu_sdk_client/sdk_client_factory.go
similarity index 62%
copy from common/shenyu_sdk_client/sdk_client_interface.go
copy to common/shenyu_sdk_client/sdk_client_factory.go
index d2a182f..6a4905a 100644
--- a/common/shenyu_sdk_client/sdk_client_interface.go
+++ b/common/shenyu_sdk_client/sdk_client_factory.go
@@ -17,17 +17,21 @@
package shenyu_sdk_client
-//mockgen -destination /mock_***_client.go -package ***_client -source common/client_interface.go
+import (
+ "github.com/apache/incubator-shenyu-client-golang/clients/nacos_client"
+ "github.com/apache/incubator-shenyu-client-golang/common/constants"
+)
/**
- * common SdkClient interface(except http client)
+ * Get client by clientName
**/
-type SdkClient interface {
- NewClient(clientParam interface{}) (client interface{}, createResult bool, err error)
-
- DeregisterServiceInstance(metaData interface{}) (registerResult bool, err error)
-
- GetServiceInstanceInfo(metaData interface{}) (registerResult bool, err error)
-
- RegisterServiceInstance(metaData interface{}) (registerResult bool, err error)
+func GetFactoryClient(clientName string) SdkClient {
+ switch clientName {
+ case constants.NACOS_CLIENT:
+ return &nacos_client.ShenYuNacosClient{}
+ //case constants.Zookeeper_CLIENT:
+ // return &zk_client.ZkClient{}
+ default:
+ return nil
+ }
}
diff --git a/common/shenyu_sdk_client/sdk_client_interface.go b/common/shenyu_sdk_client/sdk_client_interface.go
index d2a182f..53d588c 100644
--- a/common/shenyu_sdk_client/sdk_client_interface.go
+++ b/common/shenyu_sdk_client/sdk_client_interface.go
@@ -27,7 +27,7 @@ type SdkClient interface {
DeregisterServiceInstance(metaData interface{}) (registerResult bool, err error)
- GetServiceInstanceInfo(metaData interface{}) (registerResult bool, err error)
+ GetServiceInstanceInfo(metaData interface{}) (Instances interface{}, registerResult bool, err error)
RegisterServiceInstance(metaData interface{}) (registerResult bool, err error)
}
diff --git a/example/nacos_client/main.go b/example/nacos_client/main.go
index 2de72ce..c85af21 100644
--- a/example/nacos_client/main.go
+++ b/example/nacos_client/main.go
@@ -21,9 +21,12 @@ import (
"encoding/json"
"github.com/apache/incubator-shenyu-client-golang/clients/nacos_client"
"github.com/apache/incubator-shenyu-client-golang/common/constants"
+ "github.com/apache/incubator-shenyu-client-golang/common/shenyu_sdk_client"
"github.com/apache/incubator-shenyu-client-golang/model"
+ "github.com/nacos-group/nacos-sdk-go/clients/naming_client"
"github.com/nacos-group/nacos-sdk-go/vo"
"github.com/wonderivan/logger"
+ "time"
)
/**
@@ -31,6 +34,7 @@ import (
**/
func main() {
+ //Create nacos client start
//set nacos env configuration
ncp := &nacos_client.NacosClientParam{
IpAddr: "console.nacos.io",
@@ -38,6 +42,18 @@ func main() {
NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
}
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
+ result, createResult, err := sdkClient.NewClient(ncp)
+ if !createResult && err != nil {
+ logger.Fatal("Create nacos client error : %+V", err)
+ }
+
+ nc := &nacos_client.ShenYuNacosClient{
+ NacosClient: result.(*naming_client.NamingClient),
+ }
+ //Create nacos client end
+
+ //RegisterServiceInstance start
//metaData is necessary param, this will be register to shenyu gateway to use
metaData := &model.URIRegister{
Protocol: "testMetaDataRegister", //require user provide
@@ -58,18 +74,48 @@ func main() {
Enable: true, //require user provide
Healthy: true, //require user provide
Ephemeral: true, //require user provide
+ GroupName: "group-a", //require user provide
Metadata: map[string]string{"contextPath": "contextPath", "uriMetadata": string(metaDataStringJson)},
}
- client, err := nacos_client.NewNacosClient(ncp)
- if err != nil {
- logger.Fatal("create nacos client error : %+V", err)
+ registerResult, err := nc.RegisterServiceInstance(nacosRegisterInstance)
+ if !registerResult && err != nil {
+ logger.Fatal("Register nacos Instance error : %+V", err)
}
+ //RegisterServiceInstance end
- registerResult, err := nacos_client.RegisterNacosInstance(client, nacosRegisterInstance)
- if !registerResult && err != nil {
+ //GetServiceInstanceInfo start
+ queryData := vo.SelectInstancesParam{
+ ServiceName: "demo.go",
+ GroupName: "group-a", //default: DEFAULT_GROUP
+ //Clusters: []string{"cluster-a"}, // default: DEFAULT
+ HealthyOnly: true,
+ }
+
+ instanceInfo, result, err := nc.GetServiceInstanceInfo(queryData)
+ if result != false && err != nil {
logger.Fatal("Register nacos Instance error : %+V", err)
}
+ logger.Info(instanceInfo)
+ //GetServiceInstanceInfo end
+
+ time.Sleep(time.Second)
+
+ //DeregisterServiceInstance start
+ deregisterInstanceParam := vo.DeregisterInstanceParam{
+ Ip: "10.0.0.10",
+ Port: 8848,
+ ServiceName: "demo.go",
+ Ephemeral: true,
+ //Cluster: "cluster-a", // default value is DEFAULT
+ GroupName: "group-a", // default value is DEFAULT_GROUP
+ }
+
+ serviceInstance, err := nc.DeregisterServiceInstance(deregisterInstanceParam)
+ if !serviceInstance && err != nil {
+ logger.Info("DeregisterServiceInstance result : %+V", serviceInstance)
+ }
+ //DeregisterServiceInstance end
//do your logic
}