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文件加入如下:

<modules>
        <module>nacos-discovery-consumer</module>
        <module>nacos-discovery-provider</module>
        <module>nacos-discovery-consumer-feign</module>
    </modules>

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

  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

要想开启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项目
在这里插入图片描述
已经注册进来了
这时我们在访问:http://127.0.0.1:8052/test?name=tuanzi
在这里插入图片描述
也可以调用到

6.Webflux
在这里插入图片描述
我们还是复制(nacos-discovery-consumer项目,删除target和test文件夹)或者新建一个springboot项目
7.父工程添加

 <modules>
        <module>nacos-discovery-consumer</module>
        <module>nacos-discovery-provider</module>
        <module>nacos-discovery-consumer-feign</module>
        <module>nacos-discovery-consumer-webflux</module>
    </modules>

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

 <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>

    </dependencies>

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<String> 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项目
在这里插入图片描述
我们可以看到也是注册进来了。
我们访问http://127.0.0.1:8053/test?name=tuanzi丫丫
在这里插入图片描述
也可以调用。

完整源码地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值