分布式-Feign 服务调用

分布式-Feign 服务调用

Feign是一个声明性web服务客户端。它使编写web服务客户机变得更容易,本质上就是一个http,内部进行了封装而已。

角色:服务提供者,服务消费者,注册中心(上篇文章已搭建 搭建注册中心

服务提供者:

写在前面:

   1、经测试,默认情况下,feign只能通过@RequestBody传对象参数

  2、接参只能出现一个复杂对象,例:public Result<List<UserVo>> list(@RequestBody UserVo entityVo) { ... }

  3、提供者如果又要向其他消费者提供服务,又要向浏览器提供服务,建议保持原先的Controller,新建一个专门给消费者的Controller

依赖:

 <!-- eureka-client -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!-- feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

配置文件:

server.port=10084
spring.application.name=service-c
#eureka注册地址
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:1111/eureka/
#开启健康检查
eureka.client.healthcheck.enabled=true
# 续约更新时间间隔(单位秒,默认30秒)
eureka.instance.lease-renewal-interval-in-seconds=10
# 续约到期时间(单位秒,默认90秒)
eureka.instance.lease-expiration-duration-in-seconds=10

#注册在eurka信息
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=http://${spring.cloud.client.ip-address}:${server.port}
eureka.instance.hostname= ${spring.cloud.client.ip-address}

feign.hystrix.enabled=true
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000
hystrix.command.default.execution.timeout.enabled=false
feign.httpclient.connection-timeout=30000

测试接口:


   @Value("${server.port}")
    private String serverPort;

    @Value("${spring.application.name}")
    private String applicationName;
    @RequestMapping("feign")
    public String feign() {
        return "我是" + applicationName + ",我的端口是" + serverPort;
    }

启动项:

@EnableDistributedTransaction
@RefreshScope
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
public class ServiceCApplication {

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

}

消费者:

依赖:

 <!-- eureka-client -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!-- feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

配置文件:

server.port=10084
spring.application.name=service-a
#eureka注册地址
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:1111/eureka/
#开启健康检查
eureka.client.healthcheck.enabled=true
# 续约更新时间间隔(单位秒,默认30秒)
eureka.instance.lease-renewal-interval-in-seconds=10
# 续约到期时间(单位秒,默认90秒)
eureka.instance.lease-expiration-duration-in-seconds=10

#注册在eurka信息
eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=http://${spring.cloud.client.ip-address}:${server.port}
eureka.instance.hostname= ${spring.cloud.client.ip-address}


feign.hystrix.enabled=true
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=5000
hystrix.command.default.execution.timeout.enabled=false
feign.httpclient.connection-timeout=30000

测试接口:


@FeignClient(name = "service-c", path = "/",fallbackFactory = CFeignFallbackFactory.class)
public interface CFeign {
    //feign调用测试
    @RequestMapping("feign")
    public String feign();
}

启动项:

@EnableDistributedTransaction
@RefreshScope
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
public class ServiceAApplication {

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

测试:启动注册中心,消费者,服务者,访问消费者的接口
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值