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/shenyu-client-golang.git
The following commit(s) were added to refs/heads/main by this push:
new a88ccf6 [Feature :add consul doc & refactor README.] (#33)
a88ccf6 is described below
commit a88ccf6020dc9c576ce62ff5595344ea0f5c6c2d
Author: Lisandro <[email protected]>
AuthorDate: Tue Aug 2 14:58:57 2022 +0800
[Feature :add consul doc & refactor README.] (#33)
* [Feature :add consul doc & refactor README.]
* [Feature :Adjust.]
Co-authored-by: lishuo <[email protected]>
---
README.md | 321 +------------------------
README_CN.md | 321 +------------------------
doc/CONSUL_CN.md | 180 ++++++++++++++
doc/CONSUL_EN.md | 360 ++++++++++++++++++++++++++++
doc/HTTP_CN.md | 101 ++++++++
doc/HTTP_EN.md | 100 ++++++++
doc/NACOS_CN.md | 122 ++++++++++
doc/NACOS_EN.md | 122 ++++++++++
doc/ZK_CN.md | 111 +++++++++
doc/ZK_EN.md | 113 +++++++++
example/consul_client/consul_client.go | 3 +-
example/consul_client/consul_client_test.go | 4 +-
12 files changed, 1227 insertions(+), 631 deletions(-)
diff --git a/README.md b/README.md
index 73c2481..4968523 100644
--- a/README.md
+++ b/README.md
@@ -19,12 +19,13 @@ Gateway.
* **Http type Register**
* **Nacos type Register**
* **Zookeeper type Register**
+* **Consul type Register**
---
## Requirements
-Supported Go version **over 1.12**
+Supported Go version **over 1.13**
SDK Supported ShenYu version **over 2.4.3**
@@ -41,320 +42,12 @@ $ go get -u github.com/apache/shenyu-client-golang
* shenyu-client-golang/example/**_client/main.go
---
-## The Http type Register
-
-**1.Fist make sure The ShenYuAdmin is Started, and ShenYuAdmin service active
port is 9095.**
-```go
-Or you will see this error :
-
-2022-05-05 15:24:28 [WARN]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:53]
MetaDataRegister has error: The errCode is ->:503, The errMsg is ->:Please
check ShenYu admin service status
-
-caused by:
-Post "http://127.0.0.1:9095/shenyu-client/register-metadata": dial tcp
127.0.0.1:9095: connect: connection refused
-2022-05-05 15:24:28 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish
register metadata ,the result is-> false
-2022-05-05 15:24:28 [WARN]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:68]
UrlRegister has error: The errCode is ->:503, The errMsg is ->:Please check
ShenYu admin service status
-
-caused by:
-Post "http://127.0.0.1:9095/shenyu-client/register-uri": dial tcp
127.0.0.1:9095: connect: connection refused
-2022-05-05 15:24:28 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish
UrlRegister ,the result is-> false
-
-```
-
-**2.Step 1 Get shenyu_admin_client. (Register service need this)**
-
-```go
-//init ShenYuAdminClient
-adminClient := &model.ShenYuAdminClient{
- UserName: "admin", //require user provide
- Password: "123456", //require user provide
-}
-
-adminToken, err := clients.NewShenYuAdminClient(adminClient)
-
-The adminToken like this :
-{
- "code":200,
- "message":"login dashboard user success",
- "data":{
- "id":"1",
- "userName":"admin",
- "role":1,
- "enabled":true,
- "dateCreated":"2018-06-23 15:12:22",
- "dateUpdated":"2022-03-09 15:08:14",
-
"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4"
- }
-}
-
-When you success get toekn, you will see this :
-this is ShenYu Admin client token ->
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4
-
-```
-
-
-**3.Step 2 Register MetaData to ShenYu GateWay. (Need step 1 token to invoke)**
-```go
-//MetaDataRegister(Need Step 1 toekn adminToken.AdminTokenData)
-metaData := &model.MetaDataRegister{
- AppName: "testMetaDataRegister", //require user provide
- Path: "/your/path", //require user provide
- Enabled: true, //require user provide
- Host: "127.0.0.1", //require user provide
- Port: "8080", //require user provide
- }
- result, err := clients.RegisterMetaData(adminToken.AdminTokenData,
metaData)
- if err != nil {
- logger.Warn("MetaDataRegister has error:",err)
- }
- logger.Info("finish register metadata ,the result is->", result)
-
-
-When Register success , you will see this :
-finish register metadata ,the result is-> true
-```
-
-**4.Step 3 Url Register to ShenYu GateWay. (Need step 1 token to invoke)**
-```go
-//URIRegister(Need Step 1 toekn adminToken.AdminTokenData)
-//init urlRegister
- urlRegister := &model.URIRegister{
- Protocol: "testMetaDataRegister", //require user provide
- AppName: "testURLRegister", //require user provide
- ContextPath: "contextPath", //require user provide
- RPCType: constants.RPCTYPE_HTTP, //require user provide
- Host: "127.0.0.1", //require user provide
- Port: "8080", //require user provide
- }
- result, err = clients.UrlRegister(adminToken.AdminTokenData,
urlRegister)
- if err != nil {
- logger.Warn("UrlRegister has error:", err)
- }
- logger.Info("finish UrlRegister ,the result is->", result)
-```
-
-## Entire Success log
-```go
-2022-05-05 15:43:56 [INFO]
[github.com/apache/shenyu-client-golang/clients/admin_client/shenyu_admin_client.go:51]
Get ShenYu Admin response, body is -> {200 login dashboard user success {1
admin 1 true 2018-06-23 15:12:22 2022-03-09 15:08:14
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE}}
-2022-05-05 15:43:56 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:40] this is
ShenYu Admin client token ->
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE
-2022-05-05 15:43:57 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish
register metadata ,the result is-> true
-2022-05-05 15:43:57 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish
UrlRegister ,the result is-> true
-
-```
-
+## Get Start
+* Http Example [English](doc/HTTP_EN.md) | [简体中文](doc/HTTP_CN.md)
+* Nacos Example [English](doc/NACOS_EN.md) | [简体中文](doc/NACOS_CN.md)
+* Zookeeper Example [English](doc/ZK_EN.md) | [简体中文](doc/ZK_CN.md)
+* Consul Example [English](doc/CONSUL_EN.md) | [简体中文](doc/CONSUL_CN.md)
---
-## The Nacos type Register
-
-**1.Fist make sure your nacos env is correct,the set this necessary param.**
-```go
-//set nacos env configuration
- ncp := &nacos_client.NacosClientParam{
- IpAddr: "console.nacos.io",
- Port: 80,
- NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
-}
-```
-
-**2. Prepare your service metaData to register**
-```go
-//metaData is necessary param, this will be register to shenyu gateway to use
- metaData := &model.URIRegister{
- Protocol: "testMetaDataRegister", //require user provide
- AppName: "testURLRegister", //require user provide
- ContextPath: "contextPath", //require user provide
- RPCType: constants.RPCTYPE_HTTP, //require user provide
- Host: "127.0.0.1", //require user provide
- Port: "8080", //require user provide
-}
- metaDataStringJson, _ := json.Marshal(metaData)
-```
-
-**3. Prepare your service Instance message(include metaData)**
-```go
-//init NacosRegisterInstance
- nacosRegisterInstance := vo.RegisterInstanceParam{
- Ip: "10.0.0.10", //require user provide
- Port: 8848, //require user provide
- ServiceName: "demo.go", //require user provide
- Weight: 10, //require user provide
- Enable: true, //require user provide
- Healthy: true, //require user provide
- Ephemeral: true, //require user provide
- Metadata: map[string]string{"contextPath": "contextPath",
"uriMetadata": string(metaDataStringJson)},
-}
-```
-
-**4. Get shenyu nacos client**
-```go
- 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),
- }
-```
-
-
-**5.Use client to invoke RegisterServiceInstance**
-```go
- instanceInfo, err := nc.GetServiceInstanceInfo(queryData)
- if instanceInfo == nil {
- logger.Fatal("Register nacos Instance error : %+V", err)
- }
- //do your logic
-```
-**6.Use client to invoke DeregisterServiceInstance**
-```go
-//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)
-}
- //do your logic
-```
-
-**7.Use client to invoke GetServiceInstanceInfo**
-```go
- instanceInfo, result, err := nc.GetServiceInstanceInfo(queryData)
- if result != false && err != nil {
- logger.Fatal("Register nacos Instance error : %+V", err)
- }
- //do your logic
-```
-
-## Entire Success log
-```go
-2022-06-27 10:56:17 [INFO]
[github.com/shenyu-client-golang/clients/nacos_client/nacos_client.go:92]
RegisterServiceInstance,result:true
-
-,param:{Ip:10.0.0.10 Port:8848 Weight:10 Enable:true Healthy:true
Metadata:map[contextPath:contextPath
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
ClusterName: ServiceName:demo.go GroupName: Ephemeral:true}
-
-```
-
-
-
----
-## The Zookeeper type Register
-
-**1.Fist make sure your Zookeeper env is correct,the set this necessary
param.**
-```go
- //Create ShenYuZkClient start
- zcp := &zk_client.ZkClientParam{
- ZkServers: []string{"127.0.0.1:2181"}, //require user provide
- ZkRoot: "/api", //require user provide
- }
-
- sdkClient := shenyu_sdk_client.GetFactoryClient(constants.ZOOKEEPER_CLIENT)
- client, createResult, err := sdkClient.NewClient(zcp)
-
- if !createResult && err != nil {
- logger.Fatal("Create ShenYuZkClient error : %+V", err)
- }
-
- zc := client.(*zk_client.ShenYuZkClient)
- defer zc.Close()
- //Create ShenYuZkClient end
-```
-
-**2. Prepare your service metaData to register**
-```go
-//metaData is necessary param, this will be register to shenyu gateway to use
- metaData1 := &model.MetaDataRegister{
- AppName: "testMetaDataRegister1", //require user provide
- Path: "your/path1", //require user provide
- Enabled: true, //require user provide
- Host: "127.0.0.1", //require user provide
- Port: "8080", //require user provide
- }
-
- metaData2 := &model.MetaDataRegister{
- AppName: "testMetaDataRegister2", //require user provide
- Path: "your/path2", //require user provide
- Enabled: true, //require user provide
- Host: "127.0.0.1", //require user provide
- Port: "8181", //require user provide
- }
-```
-
-**3.use client to invoke RegisterServiceInstance**
-```go
- //register multiple metaData
- registerResult1, err := zc.RegisterServiceInstance(metaData1)
- if !registerResult1 && err != nil {
- logger.Fatal("Register zk Instance error : %+V", err)
- }
-
- registerResult2, err := zc.RegisterServiceInstance(metaData2)
- if !registerResult2 && err != nil {
- logger.Fatal("Register zk Instance error : %+V", err)
- }
- //do your logic
-```
-
-**4.use client to invoke DeregisterServiceInstance**
-```go
- //your can chose to invoke,not require
- deRegisterResult1, err := zc.DeregisterServiceInstance(metaData1)
- if err != nil {
- panic(err)
- }
-
- deRegisterResult2, err := zc.DeregisterServiceInstance(metaData2)
- if err != nil {
- panic(err)
- }
-```
-
-**5.use client to GetServiceInstanceInfo**
-```go
- //GetServiceInstanceInfo start
- instanceDetail, err := zc.GetServiceInstanceInfo(metaData1)
- nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
- if !ok {
- logger.Fatal("get zk client metaData error %+v:", err)
- }
-
- //range nodes
- for index, node := range nodes1 {
- nodeJson, err := json.Marshal(node)
- if err == nil {
- logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
- }
- }
-
- instanceDetail2, err := zc.GetServiceInstanceInfo(metaData2)
- nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
- if !ok {
- logger.Fatal("get zk client metaData error %+v:", err)
- }
- //GetServiceInstanceInfo end
-
-```
-
-## Entire Success log
-```go
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:105] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister1","path":"your/path1","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:119] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister2","path":"your/path2","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:132] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister3","path":"your/path3","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:139] >
DeregisterServiceInstance start
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister1
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister2
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister3
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:156]
DeregisterServiceInstance success !
-```
diff --git a/README_CN.md b/README_CN.md
index 2c7e9f7..3386206 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -16,12 +16,13 @@ Shenyu-client-golang是提供了Go语言访问ShenYu网关的功能,并支持
* **以Http方式注册**
* **以Nacos方式注册**
* **以Zookeeper方式注册**
+* **以Consul方式注册**
---
## 要求
-要求Go语言版本 **1.12**
+要求Go语言版本 **1.13**
SDK支持ShenYu的版本 **2.4.3及以上**
@@ -38,320 +39,12 @@ $ go get -u github.com/apache/shenyu-client-golang
* shenyu-client-golang/example/**_client/main.go
---
-## 以Http方式注册到ShenYu网关
-
-**1.首先确保ShenYuAdmin是启动的,并且ShenYuAdmin服务启动的端口是9095 .**
-```go
-如果没启动,你将看到如下错误:
-
-2022-05-05 15:24:28 [WARN]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:53]
MetaDataRegister has error: The errCode is ->:503, The errMsg is ->:Please
check ShenYu admin service status
-
-caused by:
-Post "http://127.0.0.1:9095/shenyu-client/register-metadata": dial tcp
127.0.0.1:9095: connect: connection refused
-2022-05-05 15:24:28 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish
register metadata ,the result is-> false
-2022-05-05 15:24:28 [WARN]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:68]
UrlRegister has error: The errCode is ->:503, The errMsg is ->:Please check
ShenYu admin service status
-
-caused by:
-Post "http://127.0.0.1:9095/shenyu-client/register-uri": dial tcp
127.0.0.1:9095: connect: connection refused
-2022-05-05 15:24:28 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish
UrlRegister ,the result is-> false
-
-```
-
-**2.获取shenyu_admin_client. (注册服务需要这个实例)**
-
-```go
-//初始化 ShenYuAdminClient
-adminClient := &model.ShenYuAdminClient{
- UserName: "admin", //需要用户提供
- Password: "123456", //需要用户提供
-}
-
-adminToken, err := clients.NewShenYuAdminClient(adminClient)
-
-adminToken像这样 :
-{
- "code":200,
- "message":"login dashboard user success",
- "data":{
- "id":"1",
- "userName":"admin",
- "role":1,
- "enabled":true,
- "dateCreated":"2018-06-23 15:12:22",
- "dateUpdated":"2022-03-09 15:08:14",
-
"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4"
- }
-}
-
-当你成功获取到Token,你将看到这些:
-this is ShenYu Admin client token ->
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4
-
-```
-
-
-**3.注册元数据到ShenYu网关. (需要上一步的adminToken去调用)**
-```go
-//元数据注册(需要上一步的token: adminToken.AdminTokenData)
-metaData := &model.MetaDataRegister{
- AppName: "testMetaDataRegister", //需要用户提供
- Path: "/your/path", //需要用户提供
- Enabled: true, //需要用户提供
- Host: "127.0.0.1", //需要用户提供
- Port: "8080", //需要用户提供
- }
- result, err := clients.RegisterMetaData(adminToken.AdminTokenData,
metaData)
- if err != nil {
- logger.Warn("MetaDataRegister has error:",err)
- }
- logger.Info("finish register metadata ,the result is->", result)
-
-
-当你注册成功,你将看到这些:
-finish register metadata ,the result is-> true
-```
-
-**4.以URL的方式注册到ShenYu网关. (需要上一步的adminToken去调用)**
-```go
-//URI注册(需要上一步的token: adminToken.AdminTokenData)
-//初始化 URI注册
- urlRegister := &model.URIRegister{
- Protocol: "testMetaDataRegister", //需要用户提供
- AppName: "testURLRegister", //需要用户提供
- ContextPath: "contextPath", //需要用户提供
- RPCType: constants.RPCTYPE_HTTP, //需要用户提供
- Host: "127.0.0.1", //需要用户提供
- Port: "8080", //需要用户提供
- }
- result, err = clients.UrlRegister(adminToken.AdminTokenData,
urlRegister)
- if err != nil {
- logger.Warn("UrlRegister has error:", err)
- }
- logger.Info("finish UrlRegister ,the result is->", result)
- //做你的逻辑处理
-```
-
-**5.完整的成功日志**
-```go
-2022-05-05 15:43:56 [INFO]
[github.com/apache/shenyu-client-golang/clients/admin_client/shenyu_admin_client.go:51]
Get ShenYu Admin response, body is -> {200 login dashboard user success {1
admin 1 true 2018-06-23 15:12:22 2022-03-09 15:08:14
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE}}
-2022-05-05 15:43:56 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:40] this is
ShenYu Admin client token ->
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE
-2022-05-05 15:43:57 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish
register metadata ,the result is-> true
-2022-05-05 15:43:57 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish
UrlRegister ,the result is-> true
-
-```
-
-
-
----
-## 以Nacos方式注册到ShenYu网关
-
-**1.首先确保你的nacos环境是正确,然后设置这些nacos必要的参数 .**
-```go
-//设置nacos环境配置
- ncp := &nacos_client.NacosClientParam{
- IpAddr: "console.nacos.io",
- Port: 80,
- NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
-}
-```
-
-**2. 准备你要注册服务的元数据信息**
-```go
-//元数据是必要的参数,这将注册到shenyu网关使用
-metaData := &model.URIRegister{
- Protocol: "testMetaDataRegister", //需要用户提供
- AppName: "testURLRegister", //需要用户提供
- ContextPath: "contextPath", //需要用户提供
- RPCType: constants.RPCTYPE_HTTP, //需要用户提供
- Host: "127.0.0.1", //需要用户提供
- Port: "8080", //需要用户提供
-}
- metaDataStringJson, _ := json.Marshal(metaData)
-```
-
-**3.准备你要注册服务的实例消息(包括元数据)**
-```go
-//初始化Nacos注册实例信息
- nacosRegisterInstance := vo.RegisterInstanceParam{
- Ip: "10.0.0.10", //需要用户提供
- Port: 8848, //需要用户提供
- ServiceName: "demo.go", //需要用户提供
- Weight: 10, //需要用户提供
- Enable: true, //需要用户提供
- Healthy: true, //需要用户提供
- Ephemeral: true, //需要用户提供
- Metadata: map[string]string{"contextPath": "contextPath",
"uriMetadata": string(metaDataStringJson)},
-}
-```
-
-**4. 获取ShenYu nacos的客户端**
-```go
- 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),
- }
-```
-
-
-**5.使用客户端调用RegisterNacosInstance方法**
-```go
- registerResult, err := nc.RegisterServiceInstance(nacosRegisterInstance)
- if !registerResult && err != nil {
- logger.Fatal("Register nacos Instance error : %+V", err)
-}
- //do your logic
-```
-
-**6.使用客户端调用DeregisterServiceInstance方法**
-```go
-//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)
-}
- //do your logic
-```
-
-**7.使用客户端调用GetServiceInstanceInfo方法**
-```go
- instanceInfo, err := nc.GetServiceInstanceInfo(queryData)
- if instanceInfo == nil {
- logger.Fatal("Register nacos Instance error : %+V", err)
- }
- //do your logic
-```
-
-**完整的成功日志**
-```go
-2022-06-27 10:56:17 [INFO]
[github.com/shenyu-client-golang/clients/nacos_client/nacos_client.go:92]
RegisterServiceInstance,result:true
-
-,param:{Ip:10.0.0.10 Port:8848 Weight:10 Enable:true Healthy:true
Metadata:map[contextPath:contextPath
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
ClusterName: ServiceName:demo.go GroupName: Ephemeral:true}
-
-```
-
-
+## 开始
+* Http 示例 [简体中文](doc/HTTP_CN.md) | [English](doc/HTTP_EN.md)
+* Nacos 示例 [简体中文](doc/NACOS_CN.md) | [English](doc/NACOS_EN.md)
+* Zookeeper 示例 [简体中文](doc/ZK_CN.md) | [English](doc/ZK_EN.md)
+* Consul 示例 [简体中文](doc/CONSUL_CN.md) | [English](doc/CONSUL_EN.md)
---
-## The Zookeeper type Register
-
-**1.首先确保你的Zookeeper环境是正确,然后设置这些Zookeeper必要的参数 .**
-```go
- //开始创建ShenYuZkClient
- zcp := &zk_client.ZkClientParam{
- ZkServers: []string{"127.0.0.1:2181"}, ////需要用户提供
- ZkRoot: "/api", ////需要用户提供
- }
-
- sdkClient := shenyu_sdk_client.GetFactoryClient(constants.ZOOKEEPER_CLIENT)
- client, createResult, err := sdkClient.NewClient(zcp)
-
- if !createResult && err != nil {
- logger.Fatal("Create ShenYuZkClient error : %+V", err)
- }
-
- zc := client.(*zk_client.ShenYuZkClient)
- defer zc.Close()
-```
-
-**2. 准备你要注册服务的元数据信息**
-```go
-//元数据是必要的参数,这将注册到shenyu网关使用
- metaData1 := &model.MetaDataRegister{
- AppName: "testMetaDataRegister1", //需要用户提供
- Path: "your/path1", //需要用户提供
- Enabled: true, //需要用户提供
- Host: "127.0.0.1", //需要用户提供
- Port: "8080", //需要用户提供
- }
-
- metaData2 := &model.MetaDataRegister{
- AppName: "testMetaDataRegister2", //需要用户提供
- Path: "your/path2", //需要用户提供
- Enabled: true, //需要用户提供
- Host: "127.0.0.1", //需要用户提供
- Port: "8181", //需要用户提供
- }
-```
-
-**3.使用客户端进行节点信息注册**
-```go
- //可以进行多个实例注册
- registerResult1, err := zc.RegisterServiceInstance(metaData1)
- if !registerResult1 && err != nil {
- logger.Fatal("Register zk Instance error : %+V", err)
- }
-
- registerResult2, err := zc.RegisterServiceInstance(metaData2)
- if !registerResult2 && err != nil {
- logger.Fatal("Register zk Instance error : %+V", err)
- }
- //做你的逻辑处理
-```
-
-**4.使用客户端进行注册节点信息删除**
-```go
- //选择性调用
- deRegisterResult1, err := zc.DeregisterServiceInstance(metaData1)
- if err != nil {
- panic(err)
- }
- deRegisterResult2, err := zc.DeregisterServiceInstance(metaData2)
- if err != nil {
- panic(err)
- }
-```
-
-**5.使用客户端获取注册节点的信息**
-```go
- //开始调用GetServiceInstanceInfo
- instanceDetail, err := zc.GetServiceInstanceInfo(metaData1)
- nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
- if !ok {
- logger.Fatal("get zk client metaData error %+v:", err)
- }
-
- //range nodes
- for index, node := range nodes1 {
- nodeJson, err := json.Marshal(node)
- if err == nil {
- logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
- }
-}
-
- instanceDetail2, err := zc.GetServiceInstanceInfo(metaData2)
- nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
- if !ok {
- logger.Fatal("get zk client metaData error %+v:", err)
- }
-
-```
-
-## 完整的成功日志
-```go
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:105] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister1","path":"your/path1","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:119] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister2","path":"your/path2","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:132] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister3","path":"your/path3","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0}
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:139] >
DeregisterServiceInstance start
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister1
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister2
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister3
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
-2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:156]
DeregisterServiceInstance success !
-```
diff --git a/doc/CONSUL_CN.md b/doc/CONSUL_CN.md
new file mode 100644
index 0000000..f01dd91
--- /dev/null
+++ b/doc/CONSUL_CN.md
@@ -0,0 +1,180 @@
+
+---
+## 以Consul方式注册到ShenYu网关
+
+**1.首先确保你的Consul环境是正确,然后设置这些Consul必要的参数.**
+```go
+ //Create ShenYuConsulClient start
+ ccp := &consul_client.ConsulClientParam{
+ Host: "127.0.0.1", //用户选择性提供
+ Port: 8500, //用户选择性提供
+ Token: "",
+ }
+
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.CONSUL_CLIENT)
+ client, createResult, err := sdkClient.NewClient(ccp)
+
+ if !createResult && err != nil {
+ logger.Fatal("Create ShenYuConsulClient error : %+V", err)
+ }
+
+ scc := client.(*consul_client.ShenYuConsulClient)
+ //Create ShenYuConsulClient end
+```
+
+**2. 准备你要注册服务的元数据信息**
+```go
+//metaData is necessary param, this will be register to shenyu gateway to use
+ uuid1, _ := uuid.GenerateUUID()
+ uuid2, _ := uuid.GenerateUUID()
+ uuid3, _ := uuid.GenerateUUID()
+
+ //RegisterServiceInstance start
+ //init MetaDataRegister
+ metaData1 := &model.MetaDataRegister{
+ ServiceId: uuid1,
+ AppName: "testMetaDataRegister1", //需要用户提供
+ Path: "/your/path1", //需要用户提供
+ Enabled: true, //需要用户提供
+ Host: "127.0.0.1", //需要用户提供
+ Port: "8080", //需要用户提供
+ RPCType: "http", //需要用户提供
+ }
+
+ metaData2 := &model.MetaDataRegister{
+ ServiceId: uuid2,
+ AppName: "testMetaDataRegister2", //需要用户提供
+ Path: "/your/path2", //需要用户提供
+ Enabled: true, //需要用户提供
+ Host: "127.0.0.1", //需要用户提供
+ Port: "8181", //需要用户提供
+ RPCType: "http", //需要用户提供
+ }
+
+ metaData3 := &model.MetaDataRegister{
+ ServiceId: uuid3,
+ AppName: "testMetaDataRegister3", //需要用户提供
+ Path: "/your/path3", //需要用户提供
+ Enabled: true, //需要用户提供
+ Host: "127.0.0.1", //需要用户提供
+ Port: "8282", //需要用户提供
+ RPCType: "http", //需要用户提供
+ }
+```
+
+**3.使用客户端进行节点信息注册**
+```go
+ //register multiple metaData
+ registerResult1, err := scc.RegisterServiceInstance(metaData1)
+ if !registerResult1 && err != nil {
+ logger.Fatal("Register consul Instance error : %+V", err)
+ }
+
+ registerResult2, err := scc.RegisterServiceInstance(metaData2)
+ if !registerResult2 && err != nil {
+ logger.Fatal("Register consul Instance error : %+V", err)
+ }
+
+ registerResult3, err := scc.RegisterServiceInstance(metaData3)
+ if !registerResult3 && err != nil {
+ logger.Fatal("Register consul Instance error : %+V", err)
+ }
+//RegisterServiceInstance end
+ //do your logic
+```
+
+**4.使用客户端进行注册节点信息删除**
+```go
+ //your can chose to invoke,not require
+ //DeregisterServiceInstance start
+ logger.Info("> DeregisterServiceInstance start")
+ deRegisterResult1, err := scc.DeregisterServiceInstance(metaData1)
+ if err != nil {
+ panic(err)
+ }
+
+ deRegisterResult2, err := scc.DeregisterServiceInstance(metaData2)
+ if err != nil {
+ panic(err)
+ }
+
+ deRegisterResult3, err := scc.DeregisterServiceInstance(metaData3)
+ if err != nil {
+ panic(err)
+ }
+
+ if deRegisterResult1 && deRegisterResult2 && deRegisterResult3 {
+ logger.Info("DeregisterServiceInstance success !")
+ }
+ //DeregisterServiceInstance end
+```
+
+**5.使用客户端获取注册节点的信息**
+```go
+ //GetServiceInstanceInfo start
+ instanceDetail, err := scc.GetServiceInstanceInfo(metaData1)
+ nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get consul client metaData error %+v:", err)
+ }
+
+ //range nodes
+ for index, node := range nodes1 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+ }
+
+ instanceDetail2, err := scc.GetServiceInstanceInfo(metaData2)
+ nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get consul client metaData error %+v:", err)
+ }
+
+ //range nodes2
+ for index, node := range nodes2 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+ }
+
+ //range nodes3
+ instanceDetail3, err := scc.GetServiceInstanceInfo(metaData3)
+ nodes3, ok := instanceDetail3.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get consul client metaData error %+v:", err)
+ }
+
+ for index, node := range nodes3 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+ }
+//GetServiceInstanceInfo end
+
+```
+
+## 完整的成功日志
+```go
+
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:77]
Create default consul client success!
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
RegisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister1 Path:
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8080
PluginNames:[] RegisterMetaData:false TimeMillis:0
ServiceId:testMetaDataRegister1}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:115]
GetNodesInfo ,success Index 0
{"appName":"testMetaDataRegister1","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister1"}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister2 Path:
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8181
PluginNames:[] RegisterMetaData:false TimeMillis:0
ServiceId:testMetaDataRegister2}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:129]
GetNodesInfo ,success Index 0
{"appName":"testMetaDataRegister2","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister2"}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister3 Path:
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8282
PluginNames:[] RegisterMetaData:false TimeMillis:0
ServiceId:testMetaDataRegister3}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:143]
GetNodesInfo ,success Index 0
{"appName":"testMetaDataRegister3","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister3"}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:150]
> DeregisterServiceInstance start
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:167]
DeregisterServiceInstance success !
+
+```
+
diff --git a/doc/CONSUL_EN.md b/doc/CONSUL_EN.md
new file mode 100644
index 0000000..760fdc0
--- /dev/null
+++ b/doc/CONSUL_EN.md
@@ -0,0 +1,360 @@
+
+---
+## 以Http方式注册到ShenYu网关
+
+**1.Fist make sure your Consul env is correct,the set this necessary param.**
+```go
+ //Create ShenYuConsulClient start
+ ccp := &consul_client.ConsulClientParam{
+ Host: "127.0.0.1", //user choice provide
+ Port: 8500, //user choice provide
+ Token: "",
+ }
+
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.CONSUL_CLIENT)
+ client, createResult, err := sdkClient.NewClient(ccp)
+
+ if !createResult && err != nil {
+ logger.Fatal("Create ShenYuConsulClient error : %+V", err)
+ }
+
+ scc := client.(*consul_client.ShenYuConsulClient)
+ //Create ShenYuConsulClient end
+```
+
+**2. Prepare your service metaData to register**
+```go
+//metaData is necessary param, this will be register to shenyu gateway to use
+ uuid1, _ := uuid.GenerateUUID()
+ uuid2, _ := uuid.GenerateUUID()
+ uuid3, _ := uuid.GenerateUUID()
+
+ //RegisterServiceInstance start
+ //init MetaDataRegister
+ metaData1 := &model.MetaDataRegister{
+ ServiceId: uuid1,
+ AppName: "testMetaDataRegister1", //require user provide
+ Path: "/your/path1", //require user provide
+ Enabled: true, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8080", //require user provide
+ RPCType: "http", //require user provide
+ }
+
+ metaData2 := &model.MetaDataRegister{
+ ServiceId: uuid2,
+ AppName: "testMetaDataRegister2", //require user provide
+ Path: "/your/path2", //require user provide
+ Enabled: true, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8181", //require user provide
+ RPCType: "http", //require user provide
+ }
+
+ metaData3 := &model.MetaDataRegister{
+ ServiceId: uuid3,
+ AppName: "testMetaDataRegister3", //require user provide
+ Path: "/your/path3", //require user provide
+ Enabled: true, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8282", //require user provide
+ RPCType: "http", //require user provide
+ }
+```
+
+**3.use client to invoke RegisterServiceInstance**
+```go
+ //register multiple metaData
+ registerResult1, err := scc.RegisterServiceInstance(metaData1)
+ if !registerResult1 && err != nil {
+ logger.Fatal("Register consul Instance error : %+V", err)
+ }
+
+ registerResult2, err := scc.RegisterServiceInstance(metaData2)
+ if !registerResult2 && err != nil {
+ logger.Fatal("Register consul Instance error : %+V", err)
+ }
+
+ registerResult3, err := scc.RegisterServiceInstance(metaData3)
+ if !registerResult3 && err != nil {
+ logger.Fatal("Register consul Instance error : %+V", err)
+ }
+//RegisterServiceInstance end
+ //do your logic
+```
+
+**4.use client to invoke DeregisterServiceInstance**
+```go
+ //your can chose to invoke,not require
+ //DeregisterServiceInstance start
+ logger.Info("> DeregisterServiceInstance start")
+ deRegisterResult1, err := scc.DeregisterServiceInstance(metaData1)
+ if err != nil {
+ panic(err)
+ }
+
+ deRegisterResult2, err := scc.DeregisterServiceInstance(metaData2)
+ if err != nil {
+ panic(err)
+ }
+
+ deRegisterResult3, err := scc.DeregisterServiceInstance(metaData3)
+ if err != nil {
+ panic(err)
+ }
+
+ if deRegisterResult1 && deRegisterResult2 && deRegisterResult3 {
+ logger.Info("DeregisterServiceInstance success !")
+ }
+ //DeregisterServiceInstance end
+```
+
+**5.use client to GetServiceInstanceInfo**
+```go
+ //GetServiceInstanceInfo start
+ instanceDetail, err := scc.GetServiceInstanceInfo(metaData1)
+ nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get consul client metaData error %+v:", err)
+ }
+
+ //range nodes
+ for index, node := range nodes1 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+ }
+
+ instanceDetail2, err := scc.GetServiceInstanceInfo(metaData2)
+ nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get consul client metaData error %+v:", err)
+ }
+
+ //range nodes2
+ for index, node := range nodes2 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+ }
+
+ //range nodes3
+ instanceDetail3, err := scc.GetServiceInstanceInfo(metaData3)
+ nodes3, ok := instanceDetail3.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get consul client metaData error %+v:", err)
+ }
+
+ for index, node := range nodes3 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+ }
+//GetServiceInstanceInfo end
+
+```
+
+## Entire Success log
+```go
+
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:77]
Create default consul client success!
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
RegisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister1 Path:
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8080
PluginNames:[] RegisterMetaData:false TimeMillis:0
ServiceId:testMetaDataRegister1}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:115]
GetNodesInfo ,success Index 0
{"appName":"testMetaDataRegister1","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister1"}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister2 Path:
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8181
PluginNames:[] RegisterMetaData:false TimeMillis:0
ServiceId:testMetaDataRegister2}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:129]
GetNodesInfo ,success Index 0
{"appName":"testMetaDataRegister2","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister2"}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister3 Path:
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8282
PluginNames:[] RegisterMetaData:false TimeMillis:0
ServiceId:testMetaDataRegister3}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:143]
GetNodesInfo ,success Index 0
{"appName":"testMetaDataRegister3","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister3"}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:150]
> DeregisterServiceInstance start
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:167]
DeregisterServiceInstance success !
+
+```
+
+
+---
+## The Consul type Register
+
+**1.Fist make sure your Consul env is correct,the set this necessary param.**
+```go
+ //Create ShenYuConsulClient start
+ ccp := &consul_client.ConsulClientParam{
+ Host: "127.0.0.1", //require user provide
+ Port: 8500, //require user provide
+ Token: "",
+ }
+
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.CONSUL_CLIENT)
+ client, createResult, err := sdkClient.NewClient(ccp)
+
+ if !createResult && err != nil {
+ logger.Fatal("Create ShenYuConsulClient error : %+V", err)
+ }
+
+ scc := client.(*consul_client.ShenYuConsulClient)
+ //Create ShenYuConsulClient end
+```
+
+**2. Prepare your service metaData to register**
+```go
+//metaData is necessary param, this will be register to shenyu gateway to use
+ uuid1, _ := uuid.GenerateUUID()
+ uuid2, _ := uuid.GenerateUUID()
+ uuid3, _ := uuid.GenerateUUID()
+
+ //RegisterServiceInstance start
+ //init MetaDataRegister
+ metaData1 := &model.MetaDataRegister{
+ ServiceId: uuid1,
+ AppName: "testMetaDataRegister1", //require user provide
+ Path: "/your/path1", //require user provide
+ Enabled: true, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8080", //require user provide
+ RPCType: "http", //require user provide
+ }
+
+ metaData2 := &model.MetaDataRegister{
+ ServiceId: uuid2,
+ AppName: "testMetaDataRegister2", //require user provide
+ Path: "/your/path2", //require user provide
+ Enabled: true, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8181", //require user provide
+ RPCType: "http", //require user provide
+ }
+
+ metaData3 := &model.MetaDataRegister{
+ ServiceId: uuid3,
+ AppName: "testMetaDataRegister3", //require user provide
+ Path: "/your/path3", //require user provide
+ Enabled: true, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8282", //require user provide
+ RPCType: "http", //require user provide
+ }
+```
+
+**3.use client to invoke RegisterServiceInstance**
+```go
+ //register multiple metaData
+ registerResult1, err := scc.RegisterServiceInstance(metaData1)
+ if !registerResult1 && err != nil {
+ logger.Fatal("Register consul Instance error : %+V", err)
+ }
+
+ registerResult2, err := scc.RegisterServiceInstance(metaData2)
+ if !registerResult2 && err != nil {
+ logger.Fatal("Register consul Instance error : %+V", err)
+ }
+
+ registerResult3, err := scc.RegisterServiceInstance(metaData3)
+ if !registerResult3 && err != nil {
+ logger.Fatal("Register consul Instance error : %+V", err)
+ }
+//RegisterServiceInstance end
+ //do your logic
+```
+
+**4.use client to invoke DeregisterServiceInstance**
+```go
+ //your can chose to invoke,not require
+ //DeregisterServiceInstance start
+ logger.Info("> DeregisterServiceInstance start")
+ deRegisterResult1, err := scc.DeregisterServiceInstance(metaData1)
+ if err != nil {
+ panic(err)
+ }
+
+ deRegisterResult2, err := scc.DeregisterServiceInstance(metaData2)
+ if err != nil {
+ panic(err)
+ }
+
+ deRegisterResult3, err := scc.DeregisterServiceInstance(metaData3)
+ if err != nil {
+ panic(err)
+ }
+
+ if deRegisterResult1 && deRegisterResult2 && deRegisterResult3 {
+ logger.Info("DeregisterServiceInstance success !")
+ }
+ //DeregisterServiceInstance end
+```
+
+**5.use client to GetServiceInstanceInfo**
+```go
+ //GetServiceInstanceInfo start
+ instanceDetail, err := scc.GetServiceInstanceInfo(metaData1)
+ nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get consul client metaData error %+v:", err)
+ }
+
+ //range nodes
+ for index, node := range nodes1 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+ }
+
+ instanceDetail2, err := scc.GetServiceInstanceInfo(metaData2)
+ nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get consul client metaData error %+v:", err)
+ }
+
+ //range nodes2
+ for index, node := range nodes2 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+ }
+
+ //range nodes3
+ instanceDetail3, err := scc.GetServiceInstanceInfo(metaData3)
+ nodes3, ok := instanceDetail3.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get consul client metaData error %+v:", err)
+ }
+
+ for index, node := range nodes3 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+ }
+//GetServiceInstanceInfo end
+
+```
+
+## Entire Success log
+```go
+
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:77]
Create default consul client success!
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
RegisterServiceInstance,result:true
+2022-07-26 18:05:43 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:160]
RegisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister1 Path:
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8080
PluginNames:[] RegisterMetaData:false TimeMillis:0
ServiceId:testMetaDataRegister1}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:115]
GetNodesInfo ,success Index 0
{"appName":"testMetaDataRegister1","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister1"}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister2 Path:
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8181
PluginNames:[] RegisterMetaData:false TimeMillis:0
ServiceId:testMetaDataRegister2}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:129]
GetNodesInfo ,success Index 0
{"appName":"testMetaDataRegister2","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister2"}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:121]
GetServiceInstanceInfo,instance:&{AppName:testMetaDataRegister3 Path:
ContextPath: RuleName: RPCType: Enabled:false Host:172.22.0.5 Port:8282
PluginNames:[] RegisterMetaData:false TimeMillis:0
ServiceId:testMetaDataRegister3}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:143]
GetNodesInfo ,success Index 0
{"appName":"testMetaDataRegister3","path":"","contextPath":"","ruleName":"","rpcType":"","enabled":false,"host":"172.22.0.5","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0,"serviceId":"testMetaDataRegister3"}
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:150]
> DeregisterServiceInstance start
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/clients/consul_client/consul_client.go:100]
DeregisterServiceInstance,result:true
+2022-07-26 18:05:44 [INFO]
[github.com/apache/shenyu-client-golang/example/consul_client/consul_client.go:167]
DeregisterServiceInstance success !
+
+```
+
diff --git a/doc/HTTP_CN.md b/doc/HTTP_CN.md
new file mode 100644
index 0000000..6f566bb
--- /dev/null
+++ b/doc/HTTP_CN.md
@@ -0,0 +1,101 @@
+
+## 以Http方式注册到ShenYu网关
+
+**1.首先确保ShenYuAdmin是启动的,并且ShenYuAdmin服务启动的端口是9095 .**
+```go
+如果没启动,你将看到如下错误:
+
+2022-05-05 15:24:28 [WARN]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:53]
MetaDataRegister has error: The errCode is ->:503, The errMsg is ->:Please
check ShenYu admin service status
+
+caused by:
+Post "http://127.0.0.1:9095/shenyu-client/register-metadata": dial tcp
127.0.0.1:9095: connect: connection refused
+2022-05-05 15:24:28 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish
register metadata ,the result is-> false
+2022-05-05 15:24:28 [WARN]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:68]
UrlRegister has error: The errCode is ->:503, The errMsg is ->:Please check
ShenYu admin service status
+
+caused by:
+Post "http://127.0.0.1:9095/shenyu-client/register-uri": dial tcp
127.0.0.1:9095: connect: connection refused
+2022-05-05 15:24:28 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish
UrlRegister ,the result is-> false
+
+```
+
+**2.获取shenyu_admin_client. (注册服务需要这个实例)**
+
+```go
+//初始化 ShenYuAdminClient
+adminClient := &model.ShenYuAdminClient{
+ UserName: "admin", //需要用户提供
+ Password: "123456", //需要用户提供
+}
+
+adminToken, err := clients.NewShenYuAdminClient(adminClient)
+
+adminToken像这样 :
+{
+ "code":200,
+ "message":"login dashboard user success",
+ "data":{
+ "id":"1",
+ "userName":"admin",
+ "role":1,
+ "enabled":true,
+ "dateCreated":"2018-06-23 15:12:22",
+ "dateUpdated":"2022-03-09 15:08:14",
+
"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4"
+ }
+}
+
+当你成功获取到Token,你将看到这些:
+this is ShenYu Admin client token ->
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4
+
+```
+
+
+**3.注册元数据到ShenYu网关. (需要上一步的adminToken去调用)**
+```go
+//元数据注册(需要上一步的token: adminToken.AdminTokenData)
+metaData := &model.MetaDataRegister{
+ AppName: "testMetaDataRegister", //需要用户提供
+ Path: "/your/path", //需要用户提供
+ Enabled: true, //需要用户提供
+ Host: "127.0.0.1", //需要用户提供
+ Port: "8080", //需要用户提供
+ }
+ result, err := clients.RegisterMetaData(adminToken.AdminTokenData,
metaData)
+ if err != nil {
+ logger.Warn("MetaDataRegister has error:",err)
+ }
+ logger.Info("finish register metadata ,the result is->", result)
+
+
+当你注册成功,你将看到这些:
+finish register metadata ,the result is-> true
+```
+
+**4.以URL的方式注册到ShenYu网关. (需要上一步的adminToken去调用)**
+```go
+//URI注册(需要上一步的token: adminToken.AdminTokenData)
+//初始化 URI注册
+ urlRegister := &model.URIRegister{
+ Protocol: "testMetaDataRegister", //需要用户提供
+ AppName: "testURLRegister", //需要用户提供
+ ContextPath: "contextPath", //需要用户提供
+ RPCType: constants.RPCTYPE_HTTP, //需要用户提供
+ Host: "127.0.0.1", //需要用户提供
+ Port: "8080", //需要用户提供
+ }
+ result, err = clients.UrlRegister(adminToken.AdminTokenData,
urlRegister)
+ if err != nil {
+ logger.Warn("UrlRegister has error:", err)
+ }
+ logger.Info("finish UrlRegister ,the result is->", result)
+ //做你的逻辑处理
+```
+
+**5.完整的成功日志**
+```go
+2022-05-05 15:43:56 [INFO]
[github.com/apache/shenyu-client-golang/clients/admin_client/shenyu_admin_client.go:51]
Get ShenYu Admin response, body is -> {200 login dashboard user success {1
admin 1 true 2018-06-23 15:12:22 2022-03-09 15:08:14
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE}}
+2022-05-05 15:43:56 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:40] this is
ShenYu Admin client token ->
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE
+2022-05-05 15:43:57 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish
register metadata ,the result is-> true
+2022-05-05 15:43:57 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish
UrlRegister ,the result is-> true
+
+```
diff --git a/doc/HTTP_EN.md b/doc/HTTP_EN.md
new file mode 100644
index 0000000..3cccd7d
--- /dev/null
+++ b/doc/HTTP_EN.md
@@ -0,0 +1,100 @@
+
+## The Http type Register
+
+**1.Fist make sure The ShenYuAdmin is Started, and ShenYuAdmin service active
port is 9095.**
+```go
+Or you will see this error :
+
+2022-05-05 15:24:28 [WARN]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:53]
MetaDataRegister has error: The errCode is ->:503, The errMsg is ->:Please
check ShenYu admin service status
+
+caused by:
+Post "http://127.0.0.1:9095/shenyu-client/register-metadata": dial tcp
127.0.0.1:9095: connect: connection refused
+2022-05-05 15:24:28 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish
register metadata ,the result is-> false
+2022-05-05 15:24:28 [WARN]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:68]
UrlRegister has error: The errCode is ->:503, The errMsg is ->:Please check
ShenYu admin service status
+
+caused by:
+Post "http://127.0.0.1:9095/shenyu-client/register-uri": dial tcp
127.0.0.1:9095: connect: connection refused
+2022-05-05 15:24:28 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish
UrlRegister ,the result is-> false
+
+```
+
+**2.Step 1 Get shenyu_admin_client. (Register service need this)**
+
+```go
+//init ShenYuAdminClient
+adminClient := &model.ShenYuAdminClient{
+ UserName: "admin", //require user provide
+ Password: "123456", //require user provide
+}
+
+adminToken, err := clients.NewShenYuAdminClient(adminClient)
+
+The adminToken like this :
+{
+ "code":200,
+ "message":"login dashboard user success",
+ "data":{
+ "id":"1",
+ "userName":"admin",
+ "role":1,
+ "enabled":true,
+ "dateCreated":"2018-06-23 15:12:22",
+ "dateUpdated":"2022-03-09 15:08:14",
+
"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4"
+ }
+}
+
+When you success get toekn, you will see this :
+this is ShenYu Admin client token ->
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUwNjc5OTQ2fQ.K92Il2kmJ0X3FgjY4igW35-pw9nsf5VKdUyqBoyIaF4
+
+```
+
+
+**3.Step 2 Register MetaData to ShenYu GateWay. (Need step 1 token to invoke)**
+```go
+//MetaDataRegister(Need Step 1 toekn adminToken.AdminTokenData)
+metaData := &model.MetaDataRegister{
+ AppName: "testMetaDataRegister", //require user provide
+ Path: "/your/path", //require user provide
+ Enabled: true, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8080", //require user provide
+ }
+ result, err := clients.RegisterMetaData(adminToken.AdminTokenData,
metaData)
+ if err != nil {
+ logger.Warn("MetaDataRegister has error:",err)
+ }
+ logger.Info("finish register metadata ,the result is->", result)
+
+
+When Register success , you will see this :
+finish register metadata ,the result is-> true
+```
+
+**4.Step 3 Url Register to ShenYu GateWay. (Need step 1 token to invoke)**
+```go
+//URIRegister(Need Step 1 toekn adminToken.AdminTokenData)
+//init urlRegister
+ urlRegister := &model.URIRegister{
+ Protocol: "testMetaDataRegister", //require user provide
+ AppName: "testURLRegister", //require user provide
+ ContextPath: "contextPath", //require user provide
+ RPCType: constants.RPCTYPE_HTTP, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8080", //require user provide
+ }
+ result, err = clients.UrlRegister(adminToken.AdminTokenData,
urlRegister)
+ if err != nil {
+ logger.Warn("UrlRegister has error:", err)
+ }
+ logger.Info("finish UrlRegister ,the result is->", result)
+```
+
+## Entire Success log
+```go
+2022-05-05 15:43:56 [INFO]
[github.com/apache/shenyu-client-golang/clients/admin_client/shenyu_admin_client.go:51]
Get ShenYu Admin response, body is -> {200 login dashboard user success {1
admin 1 true 2018-06-23 15:12:22 2022-03-09 15:08:14
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE}}
+2022-05-05 15:43:56 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:40] this is
ShenYu Admin client token ->
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNjUxODIzMDM2fQ.gMzPKaNlXEd1Q517qQamOpg358W9L0-0cZN3lkk06WE
+2022-05-05 15:43:57 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:55] finish
register metadata ,the result is-> true
+2022-05-05 15:43:57 [INFO]
[github.com/apache/shenyu-client-golang/example/http_client/main.go:70] finish
UrlRegister ,the result is-> true
+
+```
diff --git a/doc/NACOS_CN.md b/doc/NACOS_CN.md
new file mode 100644
index 0000000..b48ca80
--- /dev/null
+++ b/doc/NACOS_CN.md
@@ -0,0 +1,122 @@
+
+---
+## 以Nacos方式注册到ShenYu网关
+
+**1.首先确保你的nacos环境是正确,然后设置这些nacos必要的参数 .**
+```go
+//设置nacos环境配置
+ ncp := &nacos_client.NacosClientParam{
+ IpAddr: "console.nacos.io",
+ Port: 80,
+ NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
+}
+```
+
+**2. 准备你要注册服务的元数据信息**
+```go
+//元数据是必要的参数,这将注册到shenyu网关使用
+metaData := &model.URIRegister{
+ Protocol: "testMetaDataRegister", //需要用户提供
+ AppName: "testURLRegister", //需要用户提供
+ ContextPath: "contextPath", //需要用户提供
+ RPCType: constants.RPCTYPE_HTTP, //需要用户提供
+ Host: "127.0.0.1", //需要用户提供
+ Port: "8080", //需要用户提供
+}
+ metaDataStringJson, _ := json.Marshal(metaData)
+```
+
+**3.准备你要注册服务的实例消息(包括元数据)**
+```go
+//初始化Nacos注册实例信息
+ nacosRegisterInstance := vo.RegisterInstanceParam{
+ Ip: "10.0.0.10", //需要用户提供
+ Port: 8848, //需要用户提供
+ ServiceName: "demo.go", //需要用户提供
+ Weight: 10, //需要用户提供
+ Enable: true, //需要用户提供
+ Healthy: true, //需要用户提供
+ Ephemeral: true, //需要用户提供
+ Metadata: map[string]string{"contextPath": "contextPath",
"uriMetadata": string(metaDataStringJson)},
+}
+```
+
+**4. 获取ShenYu nacos的客户端**
+```go
+ 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),
+ }
+```
+
+
+**5.使用客户端调用RegisterNacosInstance方法**
+```go
+ registerResult, err := nc.RegisterServiceInstance(nacosRegisterInstance)
+ if !registerResult && err != nil {
+ logger.Fatal("Register nacos Instance error : %+V", err)
+}
+ //do your logic
+```
+
+**6.使用客户端调用DeregisterServiceInstance方法**
+```go
+//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)
+}
+ //do your logic
+```
+
+**7.使用客户端调用GetServiceInstanceInfo方法**
+```go
+ instanceInfo, err := nc.GetServiceInstanceInfo(queryData)
+ if instanceInfo == nil {
+ logger.Fatal("Register nacos Instance error : %+V", err)
+ }
+ //do your logic
+```
+
+**完整的成功日志**
+```go
+
+2022-07-26T18:07:32.494+0800 INFO nacos_client/nacos_client.go:79
logDir:</tmp/nacos/log> cacheDir:</tmp/nacos/cache>
+2022-07-26T18:07:32.495+0800 INFO naming_client/push_receiver.go:80
udp server start, port: 55422
+2022-07-26T18:07:32.495+0800 INFO naming_client/naming_proxy.go:54
register instance
namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468>,serviceName:<group-a@@demo.go>
with
instance:<{"valid":false,"marked":false,"instanceId":"","port":8848,"ip":"10.0.0.10","weight":10,"metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\"
[...]
+2022-07-26T18:07:33.255+0800 INFO naming_client/beat_reactor.go:68
adding beat:
<{"ip":"10.0.0.10","port":8848,"weight":10,"serviceName":"group-a@@demo.go","cluster":"cluster-a","metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\":\"8080\"}"},"scheduled":false}>
to beat map
+2022-07-26 18:07:33 [INFO]
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:107]
RegisterServiceInstance,result:true
+
+,param:{Ip:10.0.0.10 Port:8848 Weight:10 Enable:true Healthy:true
Metadata:map[contextPath:contextPath
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
ClusterName:cluster-a ServiceName:demo.go GroupName:group-a Ephemeral:true}
+
+
+2022-07-26T18:07:33.256+0800 INFO naming_client/naming_proxy.go:103
namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468> sending beat to
server:<{"ip":"10.0.0.10","port":8848,"weight":10,"serviceName":"group-a@@demo.go","cluster":"cluster-a","metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\":\"8080\"}"},"scheduled":false}>
+2022-07-26T18:07:34.256+0800 INFO util/common.go:94 Local
IP:10.167.40.91
+2022-07-26T18:07:34.507+0800 INFO naming_client/host_reactor.go:95
service not found in cache group-a@@demo.go@@cluster-a
+2022-07-26 18:07:34 [INFO]
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:139]
GetServiceInstanceInfo,result:[{Valid:false Marked:false
InstanceId:10.0.0.10#8848#cluster-a#group-a@@demo.go Port:8848 Ip:10.0.0.10
Weight:10 Metadata:map[contextPath:contextPath
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
ClusterName:cluster-a ServiceName:group-a@@demo. [...]
+
+,param:{Clusters:[cluster-a] ServiceName:demo.go GroupName:group-a
HealthyOnly:true}
+
+
+2022-07-26 18:07:34 [INFO]
[github.com/apache/shenyu-client-golang/example/nacos_client/main.go:102]
[{false false 10.0.0.10#8848#cluster-a#group-a@@demo.go 8848 10.0.0.10 10
map[contextPath:contextPath
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
cluster-a group-a@@demo.go true true true}]
+2022-07-26T18:07:35.509+0800 INFO naming_client/beat_reactor.go:83
remove beat: group-a@@[email protected]:8848 from beat map
+2022-07-26T18:07:35.509+0800 INFO naming_client/naming_proxy.go:73
deregister instance
namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468>,serviceName:<group-a@@demo.go>
with instance:<10.0.0.10:8848@cluster-a>
+2022-07-26 18:07:35 [INFO]
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:123]
DeregisterServiceInstance,result:true
+
+,param:{Ip:10.0.0.10 Port:8848 Cluster:cluster-a ServiceName:demo.go
GroupName:group-a Ephemeral:true}
+
+```
diff --git a/doc/NACOS_EN.md b/doc/NACOS_EN.md
new file mode 100644
index 0000000..d8f5e3c
--- /dev/null
+++ b/doc/NACOS_EN.md
@@ -0,0 +1,122 @@
+
+---
+## The Nacos type Register
+
+**1.Fist make sure your nacos env is correct,the set this necessary param.**
+```go
+//set nacos env configuration
+ ncp := &nacos_client.NacosClientParam{
+ IpAddr: "console.nacos.io",
+ Port: 80,
+ NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
+}
+```
+
+**2. Prepare your service metaData to register**
+```go
+//metaData is necessary param, this will be register to shenyu gateway to use
+ metaData := &model.URIRegister{
+ Protocol: "testMetaDataRegister", //require user provide
+ AppName: "testURLRegister", //require user provide
+ ContextPath: "contextPath", //require user provide
+ RPCType: constants.RPCTYPE_HTTP, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8080", //require user provide
+}
+ metaDataStringJson, _ := json.Marshal(metaData)
+```
+
+**3. Prepare your service Instance message(include metaData)**
+```go
+//init NacosRegisterInstance
+ nacosRegisterInstance := vo.RegisterInstanceParam{
+ Ip: "10.0.0.10", //require user provide
+ Port: 8848, //require user provide
+ ServiceName: "demo.go", //require user provide
+ Weight: 10, //require user provide
+ Enable: true, //require user provide
+ Healthy: true, //require user provide
+ Ephemeral: true, //require user provide
+ Metadata: map[string]string{"contextPath": "contextPath",
"uriMetadata": string(metaDataStringJson)},
+}
+```
+
+**4. Get shenyu nacos client**
+```go
+ 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),
+ }
+```
+
+
+**5.Use client to invoke RegisterServiceInstance**
+```go
+ instanceInfo, err := nc.GetServiceInstanceInfo(queryData)
+ if instanceInfo == nil {
+ logger.Fatal("Register nacos Instance error : %+V", err)
+ }
+ //do your logic
+```
+
+**6.Use client to invoke DeregisterServiceInstance**
+```go
+//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)
+}
+ //do your logic
+```
+
+**7.Use client to invoke GetServiceInstanceInfo**
+```go
+ instanceInfo, result, err := nc.GetServiceInstanceInfo(queryData)
+ if result != false && err != nil {
+ logger.Fatal("Register nacos Instance error : %+V", err)
+ }
+ //do your logic
+```
+
+## Entire Success log
+```go
+
+2022-07-26T18:07:32.494+0800 INFO nacos_client/nacos_client.go:79
logDir:</tmp/nacos/log> cacheDir:</tmp/nacos/cache>
+2022-07-26T18:07:32.495+0800 INFO naming_client/push_receiver.go:80
udp server start, port: 55422
+2022-07-26T18:07:32.495+0800 INFO naming_client/naming_proxy.go:54
register instance
namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468>,serviceName:<group-a@@demo.go>
with
instance:<{"valid":false,"marked":false,"instanceId":"","port":8848,"ip":"10.0.0.10","weight":10,"metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\"
[...]
+2022-07-26T18:07:33.255+0800 INFO naming_client/beat_reactor.go:68
adding beat:
<{"ip":"10.0.0.10","port":8848,"weight":10,"serviceName":"group-a@@demo.go","cluster":"cluster-a","metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\":\"8080\"}"},"scheduled":false}>
to beat map
+2022-07-26 18:07:33 [INFO]
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:107]
RegisterServiceInstance,result:true
+
+,param:{Ip:10.0.0.10 Port:8848 Weight:10 Enable:true Healthy:true
Metadata:map[contextPath:contextPath
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
ClusterName:cluster-a ServiceName:demo.go GroupName:group-a Ephemeral:true}
+
+
+2022-07-26T18:07:33.256+0800 INFO naming_client/naming_proxy.go:103
namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468> sending beat to
server:<{"ip":"10.0.0.10","port":8848,"weight":10,"serviceName":"group-a@@demo.go","cluster":"cluster-a","metadata":{"contextPath":"contextPath","uriMetadata":"{\"protocol\":\"testMetaDataRegister\",\"appName\":\"testURLRegister\",\"contextPath\":\"contextPath\",\"rpcType\":\"http\",\"host\":\"127.0.0.1\",\"port\":\"8080\"}"},"scheduled":false}>
+2022-07-26T18:07:34.256+0800 INFO util/common.go:94 Local
IP:10.167.40.91
+2022-07-26T18:07:34.507+0800 INFO naming_client/host_reactor.go:95
service not found in cache group-a@@demo.go@@cluster-a
+2022-07-26 18:07:34 [INFO]
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:139]
GetServiceInstanceInfo,result:[{Valid:false Marked:false
InstanceId:10.0.0.10#8848#cluster-a#group-a@@demo.go Port:8848 Ip:10.0.0.10
Weight:10 Metadata:map[contextPath:contextPath
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
ClusterName:cluster-a ServiceName:group-a@@demo. [...]
+
+,param:{Clusters:[cluster-a] ServiceName:demo.go GroupName:group-a
HealthyOnly:true}
+
+
+2022-07-26 18:07:34 [INFO]
[github.com/apache/shenyu-client-golang/example/nacos_client/main.go:102]
[{false false 10.0.0.10#8848#cluster-a#group-a@@demo.go 8848 10.0.0.10 10
map[contextPath:contextPath
uriMetadata:{"protocol":"testMetaDataRegister","appName":"testURLRegister","contextPath":"contextPath","rpcType":"http","host":"127.0.0.1","port":"8080"}]
cluster-a group-a@@demo.go true true true}]
+2022-07-26T18:07:35.509+0800 INFO naming_client/beat_reactor.go:83
remove beat: group-a@@[email protected]:8848 from beat map
+2022-07-26T18:07:35.509+0800 INFO naming_client/naming_proxy.go:73
deregister instance
namespaceId:<e525eafa-f7d7-4029-83d9-008937f9d468>,serviceName:<group-a@@demo.go>
with instance:<10.0.0.10:8848@cluster-a>
+2022-07-26 18:07:35 [INFO]
[github.com/apache/shenyu-client-golang/clients/nacos_client/nacos_client.go:123]
DeregisterServiceInstance,result:true
+
+,param:{Ip:10.0.0.10 Port:8848 Cluster:cluster-a ServiceName:demo.go
GroupName:group-a Ephemeral:true}
+
+```
diff --git a/doc/ZK_CN.md b/doc/ZK_CN.md
new file mode 100644
index 0000000..a180447
--- /dev/null
+++ b/doc/ZK_CN.md
@@ -0,0 +1,111 @@
+
+---
+## 以Zookeeper方式注册到ShenYu网关
+
+**1.首先确保你的Zookeeper环境是正确,然后设置这些Zookeeper必要的参数 .**
+```go
+ //开始创建ShenYuZkClient
+ zcp := &zk_client.ZkClientParam{
+ ZkServers: []string{"127.0.0.1:2181"}, //需要用户提供
+ ZkRoot: "/api", //需要用户提供
+ }
+
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.ZOOKEEPER_CLIENT)
+ client, createResult, err := sdkClient.NewClient(zcp)
+
+ if !createResult && err != nil {
+ logger.Fatal("Create ShenYuZkClient error : %+V", err)
+ }
+
+ zc := client.(*zk_client.ShenYuZkClient)
+ defer zc.Close()
+```
+
+**2. 准备你要注册服务的元数据信息**
+```go
+//元数据是必要的参数,这将注册到shenyu网关使用
+ metaData1 := &model.MetaDataRegister{
+ AppName: "testMetaDataRegister1", //需要用户提供
+ Path: "your/path1", //需要用户提供
+ Enabled: true, //需要用户提供
+ Host: "127.0.0.1", //需要用户提供
+ Port: "8080", //需要用户提供
+ }
+
+ metaData2 := &model.MetaDataRegister{
+ AppName: "testMetaDataRegister2", //需要用户提供
+ Path: "your/path2", //需要用户提供
+ Enabled: true, //需要用户提供
+ Host: "127.0.0.1", //需要用户提供
+ Port: "8181", //需要用户提供
+ }
+```
+
+**3.使用客户端进行节点信息注册**
+```go
+ //可以进行多个实例注册
+ registerResult1, err := zc.RegisterServiceInstance(metaData1)
+ if !registerResult1 && err != nil {
+ logger.Fatal("Register zk Instance error : %+V", err)
+ }
+
+ registerResult2, err := zc.RegisterServiceInstance(metaData2)
+ if !registerResult2 && err != nil {
+ logger.Fatal("Register zk Instance error : %+V", err)
+ }
+ //做你的逻辑处理
+```
+
+**4.使用客户端进行注册节点信息删除**
+```go
+ //选择性调用
+ deRegisterResult1, err := zc.DeregisterServiceInstance(metaData1)
+ if err != nil {
+ panic(err)
+ }
+
+ deRegisterResult2, err := zc.DeregisterServiceInstance(metaData2)
+ if err != nil {
+ panic(err)
+ }
+```
+
+**5.使用客户端获取注册节点的信息**
+```go
+ //开始调用GetServiceInstanceInfo
+ instanceDetail, err := zc.GetServiceInstanceInfo(metaData1)
+ nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get zk client metaData error %+v:", err)
+ }
+
+ //range nodes
+ for index, node := range nodes1 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+}
+
+ instanceDetail2, err := zc.GetServiceInstanceInfo(metaData2)
+ nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get zk client metaData error %+v:", err)
+ }
+
+```
+
+## 完整的成功日志
+```go
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:105] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister1","path":"your/path1","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:119] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister2","path":"your/path2","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:132] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister3","path":"your/path3","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:139] >
DeregisterServiceInstance start
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister1
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister2
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister3
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:156]
DeregisterServiceInstance success !
+```
diff --git a/doc/ZK_EN.md b/doc/ZK_EN.md
new file mode 100644
index 0000000..f95478a
--- /dev/null
+++ b/doc/ZK_EN.md
@@ -0,0 +1,113 @@
+
+---
+## The Zookeeper type Register
+
+**1.Fist make sure your Zookeeper env is correct,the set this necessary
param.**
+```go
+ //Create ShenYuZkClient start
+ zcp := &zk_client.ZkClientParam{
+ ZkServers: []string{"127.0.0.1:2181"}, //require user provide
+ ZkRoot: "/api", //require user provide
+ }
+
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.ZOOKEEPER_CLIENT)
+ client, createResult, err := sdkClient.NewClient(zcp)
+
+ if !createResult && err != nil {
+ logger.Fatal("Create ShenYuZkClient error : %+V", err)
+ }
+
+ zc := client.(*zk_client.ShenYuZkClient)
+ defer zc.Close()
+ //Create ShenYuZkClient end
+```
+
+**2. Prepare your service metaData to register**
+```go
+//metaData is necessary param, this will be register to shenyu gateway to use
+ metaData1 := &model.MetaDataRegister{
+ AppName: "testMetaDataRegister1", //require user provide
+ Path: "your/path1", //require user provide
+ Enabled: true, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8080", //require user provide
+ }
+
+ metaData2 := &model.MetaDataRegister{
+ AppName: "testMetaDataRegister2", //require user provide
+ Path: "your/path2", //require user provide
+ Enabled: true, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8181", //require user provide
+ }
+```
+
+**3.use client to invoke RegisterServiceInstance**
+```go
+ //register multiple metaData
+ registerResult1, err := zc.RegisterServiceInstance(metaData1)
+ if !registerResult1 && err != nil {
+ logger.Fatal("Register zk Instance error : %+V", err)
+ }
+
+ registerResult2, err := zc.RegisterServiceInstance(metaData2)
+ if !registerResult2 && err != nil {
+ logger.Fatal("Register zk Instance error : %+V", err)
+ }
+ //do your logic
+```
+
+**4.use client to invoke DeregisterServiceInstance**
+```go
+ //your can chose to invoke,not require
+ deRegisterResult1, err := zc.DeregisterServiceInstance(metaData1)
+ if err != nil {
+ panic(err)
+ }
+
+ deRegisterResult2, err := zc.DeregisterServiceInstance(metaData2)
+ if err != nil {
+ panic(err)
+ }
+```
+
+**5.use client to GetServiceInstanceInfo**
+```go
+ //GetServiceInstanceInfo start
+ instanceDetail, err := zc.GetServiceInstanceInfo(metaData1)
+ nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get zk client metaData error %+v:", err)
+ }
+
+ //range nodes
+ for index, node := range nodes1 {
+ nodeJson, err := json.Marshal(node)
+ if err == nil {
+ logger.Info("GetNodesInfo ,success Index", index, string(nodeJson))
+ }
+ }
+
+ instanceDetail2, err := zc.GetServiceInstanceInfo(metaData2)
+ nodes2, ok := instanceDetail2.([]*model.MetaDataRegister)
+ if !ok {
+ logger.Fatal("get zk client metaData error %+v:", err)
+ }
+ //GetServiceInstanceInfo end
+
+```
+
+## Entire Success log
+```go
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:105] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister1","path":"your/path1","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8080","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:119] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister2","path":"your/path2","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8181","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:132] GetNodesInfo
,success Index 0
{"appName":"testMetaDataRegister3","path":"your/path3","contextPath":"","ruleName":"","rpcType":"","enabled":true,"host":"127.0.0.1","port":"8282","pluginNames":null,"registerMetaData":false,"timeMillis":0}
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:139] >
DeregisterServiceInstance start
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister1
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister2
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:213] ensureName
check, path is -> /api/testMetaDataRegister3
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/clients/zk_client/zk_client.go:215] ensureName
check result is -> true
+2022-07-13 16:09:31 [INFO]
[github.com/shenyu-client-golang/example/zk_client/main.go:156]
DeregisterServiceInstance success !
+```
diff --git a/example/consul_client/consul_client.go
b/example/consul_client/consul_client.go
index f995090..a40a406 100644
--- a/example/consul_client/consul_client.go
+++ b/example/consul_client/consul_client.go
@@ -122,7 +122,7 @@ func main() {
logger.Fatal("get consul client metaData error %+v:", err)
}
- //range nodes1
+ //range nodes2
for index, node := range nodes2 {
nodeJson, err := json.Marshal(node)
if err == nil {
@@ -130,6 +130,7 @@ func main() {
}
}
+ //range nodes3
instanceDetail3, err := scc.GetServiceInstanceInfo(metaData3)
nodes3, ok := instanceDetail3.([]*model.MetaDataRegister)
if !ok {
diff --git a/example/consul_client/consul_client_test.go
b/example/consul_client/consul_client_test.go
index 15bcb2c..05aab4c 100644
--- a/example/consul_client/consul_client_test.go
+++ b/example/consul_client/consul_client_test.go
@@ -358,8 +358,8 @@ func TestEntireConsulFunction(t *testing.T) {
time.Sleep(time.Second)
//get nodes
- instanceDetail, err := scc.GetServiceInstanceInfo(metaData1)
- nodes1, ok := instanceDetail.([]*model.MetaDataRegister)
+ instanceDetail1, err := scc.GetServiceInstanceInfo(metaData1)
+ nodes1, ok := instanceDetail1.([]*model.MetaDataRegister)
assert.NotNil(t, nodes1)
assert.True(t, ok)
assert.Nil(t, err)