微服务之nacos&openfeign

changeyi / 2024-10-29 / 原文

nacos使用方法:

在docker容器中创建nacos

docker run -d \
--name nacos \
--env-file ./nacos/custom.env \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
nacos/nacos-server:v2.1.0-slim

网址为ip:8848/nacos,账号密码都是nacos

 

服务注册:
在pop.xml中引入依赖

<!--nacos 服务注册发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

在application.yml中加入

spring:
  application:
    name: nacos-service # 服务名称
  cloud:
    nacos:
      server-addr: 192.168.77.101:8848 # nacos地址

 

服务发现:

做服务注册相同操作

 

使用openfeign调用服务:
引入依赖:

  <!--openFeign-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
  <!--负载均衡器-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-loadbalancer</artifactId>
  </dependency>

在启动类中加入@EnableFeignClients注解

@EnableFeignClients(basePackages = "com.hmall.api.client")
@MapperScan("com.hmall.item.mapper")
@SpringBootApplication
public class ItemApplication {
    public static void main(String[] args) {
        SpringApplication.run(ItemApplication.class, args);
    }
}

在api模块中定义一个远程调用类

@FeignClient("item-service")
public interface ItemClient {
    @GetMapping("/items")
    List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);
}

来看看Controller的方法

@GetMapping
public List<ItemDTO> queryItemByIds(@RequestParam("ids") List<Long> ids){
return itemService.queryItemByIds(ids);
}

是不是很像呢~都是是调用接口完成,但本质上两者是截然不同的

使用时只要将在pom中引入api模块的坐标即可使用

如此,远程调用和服务注册&发现就配置完了