1
头图

被集成在Spring Cloud Alibaba中

导入nacos表单数据

修改nacos\conf\application.properties配置文件

下载 在bin中打开cmd输入 startup.cmd -m standalone

导入pom文件mod:

注册与订阅pom同

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

远程连接pom文件mod:

<!--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>

===配置后x y互为服务于订阅===

服务中心注册发现配置yml文件:

spring:
 application:
   name: trade-service
 cloud:
   nacos:
     discovery: #服务注册
       server-addr: localhost:8848    #(nacos端口号8848)

配置注册到nacos中实现远程调用接口
x y 都实现nacos注册发现 x调用yy会发送心跳到注册中心表明存活与否 若y一定时间未发送心跳心跳停止注册中心会将变更推送至调用y服务的x 排除心跳停止的服务
nacos
配置后访问地址: http://localhost:8848/nacos

openfeign远程调用:

pom文件mod:

<!--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(basePackages = "com.hmall.api.client")

声明调用接口 (拆分出单独模块A 书写配置可在之后远程调用是放入公共配置 如放入token中获取的用户id..传递给其他微服务模块) 所在包

配置单独远程调用模块书写:

config中书写配置
client中书写要调用远程接口并拿入所需类 打包成mod到其他服务项目 故可删除重复类报 (不需要方法体 补全共用uri 提取需要使用的接口)
添加@FeignClients注解 value : (nacos注册中心调用服务名/声明服务名称)

完成后在需要调用远程服务的地方注入使用

=====(config包中配置:

@Configuration
@Slf4j
public class DefaultFeignConfig {
  //log日志配置
    @Bean
    public Logger.Level level() {
        return Logger.Level.NONE;
    }
   //配置远程调用token中如用户id传递到其他调用微服务模块

    @Bean
    public RequestInterceptor requestInterceptor() {
 //lambok表达式 new RequestInterceptor
        return template -> {
            Long user = UserContext.getUser();
            log.info("openfeign调用前,用户id:==={}", user);
            if (user == null) {
                return;
            }
            template.header("user-info", user.toString());
        };
    }
}

cahrlotte
1 声望1 粉丝