SpringCloud Nacos 服务消费

2022-06-14 12:56:42

废话

大致流程其实跟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接口即可。

  • 作者:她叫我小渝
  • 原文链接:https://blog.csdn.net/qq_33601179/article/details/122112623
    更新时间:2022-06-14 12:56:42