SpringCloudチュートリアル|2.Nacosサービスの構成と発見
5489 ワード
構成管理
サンプルコード:nacos-spring-boot-config-example
1.Nacos Serverの起動
2.pomファイル依存性の追加
3.application.properties
4.@NacosPropertySourceを使用してdataIdをexampleの構成ソースとしてロードし、自動更新をオンにします.
5.Nacosの@NacosValue注記で属性値を設定する
6.プロジェクトを開始した後、ブラウザで
7.Nacos Open APIを呼び出してNacos serverに構成を公開する:dataIdはexample、内容はuseLocalCache=true
8.再アクセスhttp://localhost:8080/config/getを選択すると、返される内容がtrueになり、プログラム内のuseLocalCache値が動的に更新されたことを示します.
サービス発見
サンプルコード:nacos-spring-boot-discovery-example
1.Nachos Serverサービスの起動
2.依存関係の追加
3.application.properties
4.@NacosInjectedを使用してNacosに注入したNamingServiceの例:
5.プロジェクトの開始、ブラウザの要求http://localhost:8080/discovery/get?serviceName=exampleを選択すると、空のJSON配列[]に戻ります.
6.Nacos Open APIを呼び出してNacos serverにexampleサービスという名前のサービスを登録する
7.再アクセスhttp://localhost:8080/discovery/get?serviceName=exampleを選択すると、次のように返されます.
サンプルコード:nacos-spring-boot-config-example
1.Nacos Serverの起動
2.pomファイル依存性の追加
org.springframework.boot
spring-boot-starter
org.projectlombok
lombok
true
com.alibaba.boot
nacos-config-spring-boot-starter
0.2.1
org.springframework.boot
spring-boot-starter-web
3.application.properties
nacos.config.server-addr=127.0.0.1:8848
4.@NacosPropertySourceを使用してdataIdをexampleの構成ソースとしてロードし、自動更新をオンにします.
@NacosPropertySource(dataId = "example",groupId = "own_test",autoRefreshed = true)
@SpringBootApplication
public class SpringcloudApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudApplication.class, args);
}
}
5.Nacosの@NacosValue注記で属性値を設定する
import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("config")
public class ConfigController {
@NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
private boolean useLocalCache;
@RequestMapping(value = "/get",method = RequestMethod.GET)
@ResponseBody
public boolean get() {
return useLocalCache;
}
}
6.プロジェクトを開始した後、ブラウザで
http://localhost:8080/config/get
を要求し、コンテンツはfalse
である.7.Nacos Open APIを呼び出してNacos serverに構成を公開する:dataIdはexample、内容はuseLocalCache=true
POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=example&group=DEFAULT_GROUP&content=useLocalCache=true"
8.再アクセスhttp://localhost:8080/config/getを選択すると、返される内容がtrueになり、プログラム内のuseLocalCache値が動的に更新されたことを示します.
サービス発見
サンプルコード:nacos-spring-boot-discovery-example
1.Nachos Serverサービスの起動
2.依存関係の追加
org.springframework.boot
spring-boot-starter
org.projectlombok
lombok
true
com.alibaba.boot
nacos-discovery-spring-boot-starter
0.2.1
org.springframework.boot
spring-boot-starter-web
3.application.properties
nacos.discovery.server-addr=127.0.0.1:8848
4.@NacosInjectedを使用してNacosに注入したNamingServiceの例:
import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
* Description:
* :gu.weidong(Marco)
* date:2019/9/10
* ProjectName:alibaba-nacos-discovery-server
*/
@Controller
@RequestMapping("discovery")
public class DiscoveryController {
@NacosInjected
private NamingService namingService;
@RequestMapping(value = "/get", method = RequestMethod.GET)
@ResponseBody
public List get(@RequestParam String serviceName) throws NacosException {
return namingService.getAllInstances(serviceName);
}
}
5.プロジェクトの開始、ブラウザの要求http://localhost:8080/discovery/get?serviceName=exampleを選択すると、空のJSON配列[]に戻ります.
6.Nacos Open APIを呼び出してNacos serverにexampleサービスという名前のサービスを登録する
post 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=example&ip=127.0.0.1&port=8080'
7.再アクセスhttp://localhost:8080/discovery/get?serviceName=exampleを選択すると、次のように返されます.
[{
"instanceId": "127.0.0.1#8080#DEFAULT#DEFAULT_GROUP@@example",
"ip": "127.0.0.1",
"port": 8081,
"weight": 1.0,
"healthy": true,
"cluster": {
"serviceName": null,
"name": "",
"healthChecker": {
"type": "TCP"
},
"defaultPort": 80,
"defaultCheckPort": 80,
"useIPPort4Check": true,
"metadata": {}
},
"service": null,
"metadata": {}
}]