使用Spring Cloud Feign远程调用的方法示例

 更新时间:2018年09月03日 14:22:59   作者:pomay  
这篇文章主要介绍了使用Spring Cloud Feign远程调用的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。但是,用起来最方便、最优雅的还是要属Feign了。

Feign简介

Feign是一个声明式的Web服务客户端,使用Feign可使得Web服务客户端的写入更加方便。
它具有可插拔注释支持,包括Feign注解和JAX-RS注解、Feign还支持可插拔编码器和解码器、Spring Cloud增加了对Spring MVC注释的支持,并HttpMessageConverters在Spring Web中使用了默认使用的相同方式。Spring Cloud集成了Ribbon和Eureka,在使用Feign时提供负载平衡的http客户端。

Spring Cloud Feign简介参考:https://www.jb51.net/article/133773.htm

根据专家学者提供的账号密码,要在用户表注册一个专家学者账号(用户和专家学者不同的数据库)

在userContorller.java写一个方法:注册专家学者账号

/**
 * 专家学者注册
 * 
 * @param username
 * @param password
 * @return
 */
 @ApiOperation(value = "专家学者注册")
 @RequestMapping(value = "/registExpert", method = RequestMethod.POST)
 public long registExpert(@RequestParam("username") String username, @RequestParam("password") String password) {
 User user = new User();
 user.setUsername(username);
 user.setPassword(password);
 userService.insertSelective(user);
 long userId = user.getUserId();
 return userId;
 }

UserClient.java(这里的接口和要远程调用的controller方法声明一样(此处是UserController.java),可直接复制过来,如下所示)

package com.lgsc.cjbd.expert.remote.client;
 
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
 
import com.lgsc.cjbd.vo.Response;
 
@FeignClient(name = "cjbd-user", fallback = UserClientFallback.class)
public interface UserClient {
 
 /**
 * 注册专家学者
 */
 @RequestMapping(value = "/user/user/registExpert", method = RequestMethod.POST)
 long registExpert(@RequestParam("username") String username, @RequestParam("password") String password);
}

以及失败回调用UserClientFallBack.java

package com.lgsc.cjbd.expert.remote.client;
 
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Component;
 
import com.lgsc.cjbd.vo.Response;
 
/**
 * 失败回调
 * 
 * @author yeqj
 */
@Component
public class UserClientFallback implements UserClient {
 private static Logger log = LogManager.getLogger(UserClientFallback.class);
 
 @Override
 public long registExpert(String username, String password, String realName) {
 log.error("远程调用失败,注册专家学者失败,参数:[username=" + username + ",password=" + password + "]");
 return 0;
 }
}

之后再专家学者Service层传递专家学者用户名和密码过去,在用户表新增专家学者注册记录

userClient.registExpert(username, password);

即可完成远程调用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java泛型详解

    java泛型详解

    本文主要介绍了java泛型的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • Java观察者模式之实现对象间的一对多依赖

    Java观察者模式之实现对象间的一对多依赖

    这篇文章主要介绍了Java观察者模式之实现对象间的一对多依赖的方法,Java观察者模式是一种行为型设计模式,用于实现对象之间的消息传递和通信,文中有详细的实现步骤和代码示例,,需要的朋友可以参考下
    2023-05-05
  • 深入解析Java类加载的案例与实战教程

    深入解析Java类加载的案例与实战教程

    本篇文章主要介绍Tomcat类加载器架构,以及基于类加载和字节码相关知识,去分析动态代理的原理,对Java类加载相关知识感兴趣的朋友一起看看吧
    2022-05-05
  • SpringBoot上传文件到本服务器 目录与jar包同级问题

    SpringBoot上传文件到本服务器 目录与jar包同级问题

    这篇文章主要介绍了SpringBoot上传文件到本服务器 目录与jar包同级问题,需要的朋友可以参考下
    2018-11-11
  • mybatis中#{}和${}的区别详解

    mybatis中#{}和${}的区别详解

    本文主要介绍了mybatis中#{}和${}的区别详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Java将字符串String转换为整型Int的两种方式

    Java将字符串String转换为整型Int的两种方式

    这篇文章主要介绍了Java如何将字符串String转换为整型Int,在 Java 中要将 String 类型转化为 int 类型时,需要使用 Integer 类中的 parseInt() 方法或者 valueOf() 方法进行转换,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2023-04-04
  • Java并发统计变量值偏差原因及解决方案

    Java并发统计变量值偏差原因及解决方案

    这篇文章主要介绍了Java并发统计变量值偏差原因及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • springboot的logging.group日志分组方法源码流程解析

    springboot的logging.group日志分组方法源码流程解析

    这篇文章主要为大家介绍了springboot的logging.group日志分组方法源码流程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Spring的IOC原理详情

    Spring的IOC原理详情

    这篇文章主要介绍了Spring的IOC原理详情,IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”,还有些书籍翻译成为控制反向或者控制倒置
    2022-07-07
  • SpringBoot整合activemq的案例代码

    SpringBoot整合activemq的案例代码

    ActiveMQ是消息队列技术,为解决高并发问题而生,本文通过案例代码给大家介绍pringBoot整合activemq的详细过程,感兴趣的朋友跟随小编一起看看吧
    2022-02-02

最新评论