SpringCloud Nacos 服務消費

廢話

大致流程其實跟SpringCloud + Eureka沒太大區別,主要的坑就在於內嵌的負載均衡需要從默認的Ribbon升級爲Loadbalancer

準備工作

1、搭一個Nacos

https://nacos.io/zh-cn/docs/quick-start.html

直接按照上方鏈接的官網教程安裝一個單機版的Nacos,具體過程不在贅訴。

需要注意的是,安裝Maven的時候,記得將數據源切換成阿里雲的或者其他國內雲的鏡像地址,不然的話在構建的時候有可能有些包找不到。

//打開maven根目錄的conf文件夾,打開settings.xml文件,在合適的地方加上下面這一段
        
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>

2、準備兩個SpringCloud項目

一個做服務提供者,一個做消費者

開搞

1、導包


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.1</version>
            <!-- 使用spring loadbalancer,棄用ribbon -->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>

2、application.yml配置,兩者之間的區別就在於服務名稱

spring:
  application:
    #name: test-server #服務提供者
    name: test-service #消費者
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.2.200:8848
    loadbalancer:
      ribbon:
        enabled: false #禁用ribbon

3、入口Application類加上註解

@EnableDiscoveryClient
@EnableFeignClients
@ComponentScan(basePackages = ("com.xx.xx.*"))//自己改成你的包名
@SpringBootApplication

4、編寫一個服務提供接口(服務提供者端)

@RestController
public class TestController {

    @RequestMapping(value = "/test", method = {RequestMethod.POST, RequestMethod.GET})
    @ResponseBody
    public String test(String str) {
        log.error("服務者:"+str);
        return "測試接口:" + str;
    }
}

5、新建一個消費接口(消費者端)

微服務消費服務主要有三種方式(WebClient、RestTemplate、Feign),我這裏用的是Feign,感覺這個用起來舒服點,至於這三個東西的性能方面有沒有區別,我也不知道,如果你知道,請告訴我一聲。

@Component
@FeignClient(value = "test-server")  //對應服務提供者的ID
public interface TestService {
    @GetMapping(value = "/test")
    String test(@RequestParam(name = "str") String str);
}

6、新建一個接口消費服務(消費者端)

@Slf4j
@RestController
public class TestController {

    @Autowired
    TestService testService;

    @RequestMapping(value = "/test", method = {RequestMethod.POST, RequestMethod.GET})
    @ResponseBody
    public String test(String str) {
        log.error("消費者:" + str);
        return testService.test(str);
    }
}

完事,自行調一下消費者端的test接口即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章