1.添加依赖 可以先在本地安装一下nacos 做一下简单配置
可以看一下这篇文档 nacos的安装部署(windows版本)_nacos安装配置和部署教程-CSDN博客
注意:nacos在2.2.0 以后就不需要登录了 如果需要可以开启鉴权配置
正片开始!
<!--nacos 服务注册发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.配置Nacos
在微服务的 application.yml
中添加nacos地址配置
spring:
application:
name: item-service # 服务名称
cloud:
nacos:
server-addr: 192.168.150.101:8848 # nacos地址
3.启动服务实例 多复制几个服务实例修改一下端口避免冲突
访问nacos控制台,可以发现服务注册成功:
服务发现
服务的消费者要去nacos订阅服务,这个过程就是服务发现,步骤如下:
-
引入依赖
-
配置Nacos地址
-
发现并使用openFeign调用服务
可以发现,这里Nacos的依赖于服务注册时一致,这个依赖中同时包含了服务注册和发现的功能。因为任何一个微服务都可以调用别人,也可以被别人调用,即可以是调用者,也可以是提供者。因此,等一会儿这个微服务启动,同样会注册到Nacos
<!--nacos 服务注册发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--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>
配置Nacos地址 在消费者的微服务的application.yml
中添加nacos地址配置:
spring:
cloud:
nacos:
server-addr: 192.168.150.101:8848
启用OpenFeign 在消费者微服务 的Application
启动类上添加注解,启动OpenFeign功能:
//启动类注解
@SpringBootApplication
//启用feign客户端
@EnableFeignClients
//自动装配
@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class})
编写OpenFeign客户端
在消费者微服务
中,定义一个新的接口,编写Feign客户端:
package com.zs.cart.client;
import com.zs.cart.domain.dto.ItemDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient("item-service")
public interface ItemClient {
@GetMapping("/items")
List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);
}
这里只需要声明接口,无需实现方法。接口中的几个关键信息:
-
@FeignClient("item-service")
:声明服务名称 -
@GetMapping
:声明请求方式 -
@GetMapping("/items")
:声明请求路径 -
@RequestParam("ids") Collection<Long> ids
:声明请求参数 -
List<ItemDTO>
:返回值类型
使用FeignClient
Feign连接池 引入依赖
在消费者的微服务的pom.xml
中引入依赖:
<!--OK http 的依赖 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
</dependency>
开启连接池
在消费者的微服务的application.yml
配置文件中开启Feign的连接池功能:
feign:
okhttp:
enabled: true # 开启OKHttp功能
定义日志级别 在api模块下新建一个配置类,定义Feign的日志级别:
package com.zs.api.config;
import feign.Logger;
import org.springframework.context.annotation.Bean;
public class DefaultFeignConfig {
@Bean
public Logger.Level feignLogLevel(){
return Logger.Level.FULL;
}
}
配置 要让日志级别生效,还需要配置这个类。有两种方式:
局部生效:在某个
FeignClient
中配置,只对当前FeignClient
生效
@FeignClient(value = "微服务名称", configuration = DefaultFeignConfig.class)
全局生效:在
@EnableFeignClients
中配置,针对所有FeignClient
生效。
@EnableFeignClients(defaultConfiguration = DefaultFeignConfig.class)