springcloud-alibaba服务注册发现整合feign:webflux调用

springcloud-alibaba服务注册发现整合feign:webflux调用

1.Feign是从Netflix中分离出来的轻量级项目,能够在类接口上添加注释,成为一个REST API客户端。

这里我们用到的是OpenFeign

SpringCloud在netflix feign的基础上扩展了支持Spring MVC注释,并通过自动配置为Spring Boot应用程序提供集成。
2.我们在上一篇的文章中的项目进行改造(上一篇文章地址:springcloud-alibaba服务注册发现)
3.在新建一个springboot项目名为nacos-discovery-consumer-feign
(可以直接复制一下nacos-discovery-consumer项目,删除target文件夹)
在父工程的pom.xml文件加入如下:


        nacos-discovery-consumer
        nacos-discovery-provider
        nacos-discovery-consumer-feign
    

在nacos-discovery-consumer-feign项目的pom.xml文件中加入如下依赖:

  
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

要想开启feign我们不要忘了在启动类上加@EnableFeignClients
4.新建一个DemoFeignService

package com.tuanzi.service;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @auther 团子
 * @date 2019-07-28 16:26
 */
@FeignClient(name = "nacos-discovery-provider")//指定服务的提供方
public interface DemoFeignService {

    @GetMapping("/demo")
    String demo(@RequestParam("name") String name);
}

5.DemoController类

package com.tuanzi.controller;

import com.tuanzi.service.DemoFeignService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * @auther 团子
 * @date 2019-07-21 18:12
 */

@RestController
public class DemoController {

    @Autowired
    private DemoFeignService demoFeignService;

    @GetMapping("/test")
    public String test(String name){

        return demoFeignService.demo(name);

    }
}

这样我们代码就写完了
启动nacos,nacos-discovery-consumer-feign项目和nacos-discovery-provider项目
springcloud-alibaba服务注册发现整合feign:webflux调用_第1张图片
已经注册进来了
这时我们在访问:http://127.0.0.1:8052/test?name=tuanzi
springcloud-alibaba服务注册发现整合feign:webflux调用_第2张图片
也可以调用到

6.Webflux
springcloud-alibaba服务注册发现整合feign:webflux调用_第3张图片
我们还是复制(nacos-discovery-consumer项目,删除target和test文件夹)或者新建一个springboot项目
7.父工程添加

 
        nacos-discovery-consumer
        nacos-discovery-provider
        nacos-discovery-consumer-feign
        nacos-discovery-consumer-webflux
    

8.nacos-discovery-consumer-webflux项目的pom.xml文件添加如下:

 
        
            org.springframework.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
            org.springframework.boot
            spring-boot-starter-webflux
        

    

9.在启动类添加如下代码:

@EnableDiscoveryClient
@SpringBootApplication
public class NacosDiscoveryConsumerWebfluxApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosDiscoveryConsumerWebfluxApplication.class, args);
    }


    @Bean
    @LoadBalanced
    public WebClient.Builder webClientBuilder(){
        return WebClient.builder();
    }




}

10.controller类

package com.tuanzi.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

/**
 * @auther 团子
 * @date 2019-07-21 18:12
 */

@RestController
public class DemoController {

    @Autowired
    private WebClient.Builder webClientBuilder;




    @GetMapping("/test")
    public Mono test(String name){
        return webClientBuilder.build()
                .get()
                .uri("http://nacos-discovery-provider/demo?name=" + name)
                .retrieve()
                .bodyToMono(String.class);

    }

}

这样就算写完了。我们来启动nacos-discovery-consumer-webflux和nacos-discovery-provider项目
springcloud-alibaba服务注册发现整合feign:webflux调用_第4张图片
我们可以看到也是注册进来了。
我们访问http://127.0.0.1:8053/test?name=tuanzi丫丫
springcloud-alibaba服务注册发现整合feign:webflux调用_第5张图片
也可以调用。

完整源码地址

你可能感兴趣的:(springcloud)