FeignClient如何脫離eureka自定義URL
FeignClient脫離eureka自定義URL
需求
Spring Cloud環(huán)境中的FeignClient有時候需要調用特定主機的接口,但是默認是從eureka上的注冊列表自動獲取到的負載均衡過后的URL,這時怎么辦呢?
方法一: FeignClient注解中添加URL屬性
如果本地可以編譯參照的FeignClient源碼,可以直接修改,如果參照的是jar包,則可以另外自己做一個FeignClient,主要是要指定url屬性:
@FeignClient(name = "test-service", path = "/test", url="http://localhost:8000")
public interface TestFeignClient{
?? ?@GetMapping(value = "/test1")
?? ?String test1();方法二: eureka禁用ribbon,并手動配置服務列表
設置 ribbon.eureka.enable = false
自定義接口的服務地址
ribbon: ? eureka: ? ? enabled: false test-service: ? ribbon: ? ? listOfServers: http://localhost:8000
注意
方法二的設置會導致所有FeignClient都需要在配置文件中自定義服務地址,
如果需要特定指定的服務URL并不多的話,推薦使用方法一。
另外,如果項目本身就不需要eureka,推薦方法二,因為url可以指定多個,來實現一定的負載均衡。
feign不使用eureka
main
@EnableFeignClients
@SpringBootApplication
public class FeignMain {
? ? public static void main(String[] args) {
? ? ? ? SpringApplication.run(FeignMain.class, args);
? ? }
}server端代碼
server端依舊是用randomInt
@RequestMapping(value = "/getNum", method = RequestMethod.GET)
? ? public int getRandomInt() {
? ? ? ? Random random = new Random();
? ? ? ? Integer num = random.nextInt(100);
? ? ? ? logger.info("getRandomInt:" + num);
? ? ? ? return num;
? ? }Client端代碼
@FeignClient(name = "thisOnlyName", url = "http://localhost:10102")
public interface RestFulService {
? ? /**
? ? ?* 默認沒有參數會使用get方法
? ? ?*
? ? ?* @return
? ? ?*/
? ? @RequestMapping(value = "/getNum")
? ? int getRandomInt();
}此處通過url直接指定就好了。不需要配置eureka。ribbon也不會生效。單節(jié)點個人學習棒棒噠!
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

