openfeign远程调用

简介: openfeign远程调用

不患人之不己知,患不知人也。——孔子《论语》

书接上文,我们配置了nacos,实现了服务注册与发现

我们再配置一台

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
  application:
    name: ruben-consumer
server:
  port: 8081

在配好的这台ruben-consumer中随便写个接口

package com.ruben.rubenproducerdemo.controller;
import com.ruben.rubenproducerdemo.pojo.dto.PageDTO;
import com.ruben.rubenproducerdemo.utils.AjaxJson;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("study")
public class StudyController {
    @GetMapping("list")
    public AjaxJson list(@RequestBody PageDTO pageDTO) {
        return AjaxJson.success().put("data", pageDTO);
    }
}

然后在第一台引入Feign的依赖

<!--    openfeign 远程调用    -->
      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-openfeign</artifactId>
          <version>2.2.0.RELEASE</version>
      </dependency>

在主启动类上方加上@EnableFeignClients注解

package com.ruben;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling
@EnableFeignClients("com.ruben.feign")
@EnableDiscoveryClient
@SpringBootApplication
@MapperScan({"com.ruben.dao.xml"})
public class SimpleSpringbootApplication {
    public static void main(String[] args) {
        SpringApplication.run(SimpleSpringbootApplication.class, args);
    }
}

然后我们在调用方ruben-provider写个接口

package com.ruben.feign;
import com.ruben.pojo.dto.PageDTO;
import com.ruben.utils.AjaxJson;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient("ruben-consumer")
public interface StudyFeignService {
    @GetMapping("study/list")
    AjaxJson list(@RequestBody PageDTO pageDTO);
}

再调用ruben-consumer

package com.ruben.controller;
import com.ruben.feign.StudyFeignService;
import com.ruben.pojo.dto.PageDTO;
import com.ruben.utils.AjaxJson;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * @ClassName: StudyController
 * @Description: 我还没有写描述
 * @Date: 2021/3/4 0004 21:49
 * *
 * @author: <achao1441470436@gmail.com>
 * @version: 1.0
 * @since: JDK 1.8
 */
@RestController
@RequestMapping("study")
public class StudyController {
    @Resource
    private StudyFeignService studyFeignService;
    @PostMapping("list")
    public AjaxJson list(@RequestBody PageDTO pageDTO) {
        return studyFeignService.list(pageDTO);
    }
}

最后实现远程调用服务

可以看到我们调用ruben-provider的接口,实际返回了ruben-consumer接口的结果

相关文章
|
3天前
|
JSON Dubbo Java
Feign远程调用
Feign远程调用
6 1
Feign远程调用
|
19天前
|
JSON Java 数据格式
【微服务】SpringCloud之Feign远程调用
本文介绍了使用Feign作为HTTP客户端替代RestTemplate进行远程调用的优势及具体使用方法。Feign通过声明式接口简化了HTTP请求的发送,提高了代码的可读性和维护性。文章详细描述了Feign的搭建步骤,包括引入依赖、添加注解、编写FeignClient接口和调用代码,并提供了自定义配置的示例,如修改日志级别等。
44 1
|
3月前
|
Java 数据库 微服务
使用OpenFeign进行服务调用
本文档介绍如何在微服务架构中使用Spring Cloud的OpenFeign进行服务间的远程调用。首先,需在项目中引入OpenFeign及其负载均衡器依赖。接着,通过`@EnableFeignClients`启用Feign客户端功能,并定义客户端接口以声明远程服务调用逻辑。为确保启动类能正确扫描到这些接口,需指定`basePackages`属性。最后,演示了如何在购物车服务中利用Feign客户端接口调用商品服务,以实现跨服务的数据整合和查询。Feign通过动态代理机制简化了HTTP请求的发起过程,使服务间交互更为直观和便捷。
105 0
|
5月前
springCloud之服务调用RestTemplate、OpenFeign
springCloud之服务调用RestTemplate、OpenFeign
|
6月前
|
负载均衡 Java 应用服务中间件
Ribbon、Feign和OpenFeign的区别来了
Ribbon、Feign和OpenFeign的区别来了
260 2
|
6月前
|
存储 JSON 负载均衡
基于OpenFeign的服务调用
基于OpenFeign的服务调用
59 2
|
6月前
|
Java Apache
Feign
Feign
42 0
|
6月前
|
负载均衡 Java 网络架构
使用OpenFeign实现服务远程调用
当微服务架构日益普及,服务之间的远程调用变得至关重要。在这一背景下,OpenFeign作为一个强大的HTTP客户端框架简化了服务之间的远程通信。本文旨在介绍如何运用OpenFeign实现服务远程调用。
233 0
SpringCloud-Feign-文件服务调用
SpringCloud-Feign-文件服务调用
66 0
|
6月前
|
监控 安全 Java
深入理解Feign
深入理解Feign
215 2