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

网友投稿 351 2023-01-22


使用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://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.insertSelechttp://tive(userCwZjOYJj);

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

}

以及失败回http://调用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);

即可完成远程调用


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:spring mvc高级技术实例详解
下一篇:解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~