example/nacos_client/nacos_client.go (78 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package main
import (
"encoding/json"
"fmt"
"github.com/apache/shenyu-client-golang/clients/nacos_client"
"github.com/apache/shenyu-client-golang/common/constants"
"github.com/apache/shenyu-client-golang/common/shenyu_sdk_client"
"github.com/apache/shenyu-client-golang/model"
"github.com/nacos-group/nacos-sdk-go/clients/naming_client"
"github.com/nacos-group/nacos-sdk-go/vo"
"time"
)
/**
* The nacos_client example
**/
func main() {
//Create ShenYuNacosClient start
//set nacos env configuration
ncp := &nacos_client.NacosClientParam{
IpAddr: "console.nacos.io",
Port: 80,
NamespaceId: "public",
}
sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
result, createResult, err := sdkClient.NewClient(ncp)
if !createResult && err != nil {
fmt.Printf("Create ShenYuNacosClient error : %v", err)
}
nc := &nacos_client.ShenYuNacosClient{
NacosClient: result.(*naming_client.NamingClient),
}
//Create ShenYuNacosClient end
//RegisterServiceInstance start
//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
NamespaceIds: "649330b6-c2d7-4edc-be8e-8a54df9eb385", //require user provide
}
metaDataStringJson, _ := json.Marshal(metaData)
//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
GroupName: "group-a", //require user provide
ClusterName: "cluster-a", // default value is DEFAULT
Metadata: map[string]string{"contextPath": "contextPath", "uriMetadata": string(metaDataStringJson)},
}
registerResult, err := nc.RegisterServiceInstance(nacosRegisterInstance)
if !registerResult && err != nil {
fmt.Printf("Register nacos Instance error : %v", err)
}
//RegisterServiceInstance end
time.Sleep(time.Second)
//GetServiceInstanceInfo start
queryData := vo.SelectInstancesParam{
ServiceName: "demo.go",
GroupName: "group-a", //default: DEFAULT_GROUP
Clusters: []string{"cluster-a"}, // default: DEFAULT
HealthyOnly: true,
}
instanceInfo, err := nc.GetServiceInstanceInfo(queryData)
if instanceInfo == nil {
fmt.Printf("Register nacos Instance error : %v", err)
}
fmt.Printf("GetServiceInstanceInfo result : %v", 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 {
fmt.Printf("DeregisterServiceInstance result : %v", serviceInstance)
}
//DeregisterServiceInstance end
//do your logic
}