nacos enablediscoveryclient_Nacos入门指南03 服务发现实践
你好,歡迎閱讀,本文是系列文章中的第3篇。
Part1 - Nacos 是什么?
Part2 - Nacos 環境搭建
Part3 - Nacos 服務發現實踐
Part4 - Nacos 分布式配置實踐
本文的目的是對 SpringBoot 服務整合 Nacos,實現服務調用。
下面會創建2個 SpringBoot 項目:
- service-provider
- service-consumer
都整合 Nacos,啟動后可以自動注冊到 Nacos 服務注冊中心。
然后在 service-consumer 的 Controller 中實現對 service-provider 的接口調用。
步驟:
(1)創建 service-provider 與 service-consumer,整合 Nacos
(2)service-provider 中添加測試接口 "/hello",service-consumer 中調用其 "/hello" 接口
1. 創建服務 整合 Nacos
1.1 service-provider
pom.xml
<?xml ?version="1.0"?encoding="UTF-8"?>...
????<parent>
????????<groupId>org.springframework.bootgroupId>
????????<artifactId>spring-boot-starter-parentartifactId>
????????
????????<version>2.2.5.RELEASEversion>
????????<relativePath/>
????parent>
????<groupId>com.examplegroupId>
????<artifactId>service-providerartifactId>
????<version>0.0.1-SNAPSHOTversion>
????<name>service-providername>
????<description>Demo?project?for?Spring?Bootdescription>
????<properties>
????????<java.version>1.11java.version>
????properties>
????<dependencies>
????????<dependency>
????????????<groupId>org.springframework.bootgroupId>
????????????<artifactId>spring-boot-starter-webartifactId>
????????dependency>
????????
????????<dependency>
????????????<groupId>com.alibaba.cloudgroupId>
????????????<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
????????dependency>
????dependencies>
????<dependencyManagement>
????????<dependencies>
????????????
????????????<dependency>
????????????????<groupId>org.springframework.cloudgroupId>
????????????????<artifactId>spring-cloud-dependenciesartifactId>
????????????????<version>Hoxton.SR3version>
????????????????<type>pomtype>
????????????????<scope>importscope>
????????????dependency>
????????????
????????????<dependency>
????????????????<groupId>com.alibaba.cloudgroupId>
????????????????<artifactId>spring-cloud-alibaba-dependenciesartifactId>
????????????????<version>2.2.1.RELEASEversion>
????????????????<type>pomtype>
????????????????<scope>importscope>
????????????dependency>
????????dependencies>
????dependencyManagement>
????<build>
????????<plugins>
????????????<plugin>
????????????????<groupId>org.springframework.bootgroupId>
????????????????<artifactId>spring-boot-maven-pluginartifactId>
????????????plugin>
????????plugins>
????build>
...
重點是 SpringBoot、SpringCloud、SpringCloud Alibaba 這3者的版本問題,這里使用的版本為:
- SpringBoot 2.2.5.RELEASE
- SpringCloud Hoxton.SR3
- SpringCloud Alibaba 2.2.1.RELEASE
如何確定各自的版本呢?在 SpringCloud Alibaba 項目的 wiki 文檔中有所說明,地址為:
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E頁面效果:
添加好依賴之后,添加相關配置:
server:??port:?8081?#?端口
spring:
??application:
????name:?service-provider?#?服務名
??cloud:
????nacos:
??????discovery:
????????server-addr:?localhost:8848?#?nacos?server?地址
然后在啟動類中添加注解:
...@SpringBootApplication
@EnableDiscoveryClient?//?開啟服務發現
public?class?ServiceProviderApplication?{
????public?static?void?main(String[]?args)?{
????????SpringApplication.run(ServiceProviderApplication.class,?args);
????}
}
1.2 service-consumer
依賴于 service-provider 中一致,還有添加的注解也是一樣的。
只是配置有點不同,需要使用不同的端口,以及服務名稱:
server:??port:?8082?#?端口
spring:
??application:
????name:?service-consumer?#?服務名
??cloud:
????nacos:
??????discovery:
????????server-addr:?localhost:8848?#?nacos?server?地址
1.3 啟動測試
分別啟動 service-provider 與 service-consumer,啟動后即可在 Nacos 控制臺的服務列表中看到:
說明整合 Nacos 成功。
2. 服務調用
2.1 service-provider
在 service-provider 中添加一個測試接口 /hello:
...@RestController
public?class?TestController?{
????@GetMapping("hello")
????public?String?hello(@RequestParam?String?name){
????????return?"hello?"?+?name;
????}
}
2.2 service-consumer
在 service-consumer 中進行調用,因為需要使用 RestTemplate,所以先配置一下:
...@Configuration
public?class?ConsumerConfig?{
????//?定義?RestTemplate?Bean
????@Bean
????public?RestTemplate?restTemplate(){
????????return?new?RestTemplate();
????}
}
下面開始調用:
...@RestController
public?class?TestController?{
????//?引入?RestTemplate?和?LoadBalancerClient
????@Autowired
????RestTemplate?restTemplate;
????@Autowired
????LoadBalancerClient?loadBalancerClient;
????@GetMapping("hello")
????public?String?hello(@RequestParam?String?name)?{
????????String?result?=?"";
????????//?根據服務名獲取服務實例
????????ServiceInstance?serviceInstance?=?loadBalancerClient.choose("service-provider");
????????//?發起調用,返回調用結果
????????return?restTemplate.getForObject(serviceInstance.getUri()?+?"/hello?name="?+?name,?String.class);
????}
}
2.3 啟動測試
重啟 service-provider、service-consumer,訪問 service-consumer 的 /hello 接口,地址:
http://localhost:8082/hello?name=nacos
返回結果為 "hello nacos",調用成功。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的nacos enablediscoveryclient_Nacos入门指南03 服务发现实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32 hal uart_STM32
- 下一篇: spring boot 邮件端口_1 分