springCloud使用 nacos 服务注册和OpenFeign远程调用

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)
 ok 到这里使用Nacos服务注册和消费 并且使用openfeign实现远程调用并且 feign会自动实现负载均衡 就结束啦!感谢观看!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值