云社区 博客 博客详情

微服务-(声明式调用feign)

yd_85409769 发表于 2020-02-23 18:38:33 2020-02-23
0
0

【摘要】 声明式调用Fegin一.初步认知fegin相比ribbon更方便,简化了代码了,代理了请求。整合了hystrix。二.写一个feign三.fegin的应用pomorg.springframework.cloudspring-cloud-starter-netflix-eureka-clientymlserver:port:8083spring:application:name:...

声明式调用 Fegin

一.初步认知fegin

相比ribbon更方便,简化了代码了,代理了请求。整合了hystrix。

二.写一个feign

三.fegin的应用

pom


    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client

yml

server:
  port: 8083

spring:
  application:
    name: feign-consumer
eureka:
  client:
    service-url:
      defaultZone : http://127.0.0.1:10000/eureka/

feign:
  hystrix:
    enabled: true


hystrix:
  command:
    default:
      execution:
        isolation:
          thread :
            timeoutInMilliseconds: 100

客户端注解


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableFeignClients //启用feign,如果说需要启动默认配置,就这么写,如果需要覆盖就写成(@EnableFeignClients(defaultConfiguration = "FooConfiguartion.class"))
public class FeignDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(FeignDemoApplication.class, args);
    }

}

import com.dn.feigndemo.fallback.HelloDemoFallback;
import com.dn.feigndemo.model.Teacher;
import feign.Body;
import feign.Param;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Component
@FeignClient(name="HELLOCLIENT",fallback = HelloDemoFallback.class)
public interface HelloDemoService {

    @RequestMapping(value = "",method = RequestMethod.GET)
    public Object getTeacher();

    @RequestMapping(value = "/user",method = RequestMethod.GET)
    public Teacher getByTeacher(@RequestParam("id")String id);

    @Body("%7B\"orderNo\": \"{orderNo}\"%7D")
    @RequestMapping(value = "/user",method = RequestMethod.POST)
    public int addOrder(@Param("orderNo")String orderNo);

    @RequestMapping(value = "/user",method = RequestMethod.POST)
    public int addTeacher(@Param("orderNo")String orderNo);

}

1.模板 2.设置请求头

package com.dn.feigndemo.service;

import com.dn.feigndemo.model.Teacher;
import feign.Headers;
import feign.Param;
import org.springframework.web.bind.annotation.RequestMapping;

@Headers("Accept:appliaction/json") //当前接口下,所有的feign请求都会被设置这个头
public interface FeginHeaderDemo {

    @Headers("Content-Type:appliaction/json")
    @RequestMapping("")
    int addOrder(Teacher teacher);

    @Headers("Token:{token}")//设置动态值
    @RequestMapping("")
    Teacher getOrder(@Param("token")String token);
}

四.fegin的工作流程

五.fegin与hystrix的集成

六.fegin和ribbon的集成

 

文章来源: www.oschina.net,作者:这很耳东先生,版权归原作者所有,如需转载,请联系作者。

原文链接:https://my.oschina.net/u/3728166/blog/3170798

登录后可下载附件,请登录或者注册

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:huaweicloud.bbs@huawei.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
评论文章 //点赞 收藏 0
点赞
分享文章到微博
分享文章到朋友圈

上一篇:win7重建用户配置文件方法

下一篇:面试一问:关于 View测量、布局及绘制原理

评论 (0)


登录后可评论,请 登录注册

评论