0030-Eureka消费者(Feign&Ribbon)

本文介绍如何使用Feign简化微服务间的调用。通过配置pom依赖、yml参数,实现Feign客户端接口定义及服务调用,最终完成微服务消费者搭建。涉及Feign的请求过程、负载均衡策略及具体实现步骤。

1. Feign

feign是个伪java http客户端,他在真正的http客户端HttpUrlConnection,HttpClient上包装了一次,可以通过注解的方式生成请求模板,简化开发。

2. 请求过程

首先根据feign的规则实现接口;其次接口方法被调用时,利用jdk代理生成RequestTemplate对象;然后ReqeustTemplate交给client执行;最后在执行的过程中被拦截器拦截,根据负载均衡策略选择真实访问的服务。

3.消费者搭建

3.1 pom依赖
<dependencies>
    <dependency>
        <groupId>com.honor</groupId>
        <artifactId>interface</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>
3.2 yml配置
server:
  port: 9002

eureka:
  client:
    serviceUrl:
      defaultZone: http://eureka-server-7001:7001/eureka/,http://eureka-server-7002:7002/eureka/,http://eureka-server-7003:7003/eureka/
#      defaultZone: http://eureka-server-8001:8001/eureka/
  instance:
    instance-id: eureka-provider-9002 # 服务名称
    prefer-ip-address: true # 显示ip地址

info: # 点击注册列表未服务出现的信息
  app.name: springcloud
  company.name: www.honor.com
  build.artifactId: @project.artifactId@
  build.version: @project.version@

spring:
  application:
    name: eureka-consumer-feign
3.3 Feign客户端

// 这个是放在interface的接口,添加FeignClient注解。

@FeignClient("eureka-provider")
public interface IHelloService {
    /**
     * 打招呼
     *
     * @param name bb侠
     * @return
     */
    @GetMapping("/hello/{name}")
    // @PathVariable必须包含名称,不然无法启动
    String sayHello(@PathVariable("name") String name);
}
3.4 服务调用
// 服务名称,如果是集群需要指定统一的名字
@RestController
public class HelloController {
    @Autowired
    private IHelloService helloService;

    @GetMapping("/hello/{name}")
    public String sayHello(@PathVariable String name) {
        return helloService.sayHello(name);
    }
}
3.5 主启动类
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class EurekaConsumerFeign9002Application {
    public static void main(String[] args) {
        SpringApplication.run(EurekaConsumerFeign9002Application.class, args);
    }
}
3.6 测试

浏览器访问http://localhost:9002/hello/kangkang
正常是轮询

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值