怎么调用@FeignClient
时间: 2023-11-07 14:03:35 浏览: 102
在使用@FeignClient进行调用时,首先需要在主程序入口添加@EnableFeignClients注解来开启对Feign Client的扫描加载处理。然后,根据Feign Client的开发规范,需要定义一个接口并添加@FeignClient注解。在程序启动时,会进行包扫描,扫描所有带有@FeignClient注解的类,并将这些信息注入到Spring IOC容器中。当调用定义的Feign接口中的方法时,通过JDK的代理方式来生成具体的RequestTemplate。Feign为每个接口方法创建一个RequestTemplate对象,该对象封装了HTTP请求所需的全部信息。然后,RequestTemplate生成Request,并将其交给Client(可以是JDK原生的URLConnection、Apache的HttpClient,或者OkHttp)来处理。最后,Client会被封装到LoadBalanceClient类中,该类结合Ribbon负载均衡实现服务之间的调用。
相关问题
传参数调用@FeignClient
要传参数调用@FeignClient,可以使用以下步骤:
1. 在FeignClient接口的方法上使用@RequestParam注解或者@RequestBody注解来传递参数。如果是GET请求,可以使用@RequestParam注解,如果是POST请求,可以使用@RequestBody注解。
2. 在FeignClient接口的方法上使用@RequestMapping注解来指定请求的路径。
3. 在FeignClient接口上使用@FeignClient注解来指定要调用的微服务的名称。
4. 在启动类上添加@EnableFeignClients注解来启用FeignClient。
deposit-voucher 内有两个feign接口 AccountVoucherClient的注解是@FeignClient(name = "account-voucher", path = "/account-voucher") @FeignClient(name = "deposit-voucher",path = "/deposit-voucher")的注解是 @FeignClient(name = "deposit-voucher",path = "/deposit-voucher") 消费方调用AccountVoucherClient 报Load balancer does not have available server for client: account-voucher
根据你提供的信息,似乎存在一些混淆。如果你的服务名是 "deposit-voucher",那么 `AccountVoucherClient` 的注解应该是 `@FeignClient(name = "deposit-voucher", path = "/account-voucher")` 而不是 `@FeignClient(name = "account-voucher", path = "/account-voucher")`。
在消费方调用 `AccountVoucherClient` 的时候报错 "Load balancer does not have available server for client: account-voucher",可能是由于服务名配置不正确导致的。请确保在调用 `AccountVoucherClient` 时使用的服务名与服务提供方的服务名一致,即 "deposit-voucher"。
如果问题仍然存在,请检查服务提供方是否正常运行,并确保服务注册和发现机制(如Eureka)已正确配置。另外,还可以检查服务提供方的日志,查看是否有其他错误信息。
阅读全文