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

作者:pomay 时间:2021-12-06 10:30:09 

在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);

即可完成远程调用

来源:https://blog.csdn.net/pomay/article/details/73776300

标签:Spring,Cloud,Feign,远程调用
0
投稿

猜你喜欢

  • Java8时间api之LocalDate/LocalDateTime的用法详解

    2023-11-10 16:14:43
  • Java中的5种同步辅助类介绍

    2023-11-14 21:36:28
  • Java中值类型和引用类型详解

    2023-11-29 00:44:51
  • java利用数组随机抽取幸运观众

    2023-11-11 11:14:33
  • 关于MVC与SpringMVC的介绍、区别、执行流程

    2023-11-28 02:25:56
  • Android中获取资源 id 及资源 id 的动态获取

    2023-06-30 04:38:06
  • Springboot jar主清单属性丢失解决方案

    2022-04-06 05:30:26
  • spring mvc 实现获取后端传递的值操作示例

    2023-08-10 12:55:52
  • java高并发ScheduledThreadPoolExecutor与Timer区别

    2023-08-11 03:08:29
  • Java调用linux shell脚本的方法

    2022-03-25 23:09:46
  • SpringMVC上传文件的两种方法

    2023-11-17 14:27:20
  • C++容器适配与栈的实现及dequeque和优先级详解

    2023-11-02 12:57:52
  • Java集合框架之List ArrayList LinkedList使用详解刨析

    2022-04-24 13:43:43
  • Spring Data Jpa 复杂查询方式总结(多表关联及自定义分页)

    2023-11-21 10:01:27
  • Spring Boot缓存实战 EhCache示例

    2023-08-30 12:23:35
  • Spring mvc Json处理实现流程代码实例

    2023-07-14 21:31:06
  • 基于springboot 配置文件context-path的坑

    2021-07-04 17:37:27
  • 如何把char数组转换成String

    2023-11-11 07:38:15
  • 老生常谈Java字符串进阶(必看篇)

    2023-11-12 21:19:35
  • Java编程中使用throw关键字抛出异常的用法简介

    2023-08-27 17:04:19
  • asp之家 软件编程 m.aspxhome.com