Использование Netflix Feign для обнаружения службы Eureka без Spring - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть следующая инфраструктура:

1) Eureka Server, работающий под Spring Boot

2) 2 Микросервисы, работающие под Spring Boot, используя Eureka Client для регистрации на сервере.

3) Старое JSF-приложение, которое должно взаимодействовать с этими двумя микросервисами.

Итак, я знаю, что у Eureka есть несколько конечных точек, чтобы получить HOST и PORT от зарегистрированной службы, думая об этом, я создал следующее:

private String getURLEurekaService(String app) throws IOException, ParserConfigurationException, SAXException {
        String urlEureka = "http://myip:8761/eureka/apps/" + app;
        CloseableHttpClient closeableHttpClient = HttpClientBuilder.create().build();
        HttpGet get = new HttpGet(urlEureka);
        HttpResponse response = closeableHttpClient.execute(get);
        String xml = IOUtils.toString(response.getEntity().getContent());
        Document doc = DocumentBuilderFactory.newInstance()
                .newDocumentBuilder()
                .parse(new InputSource(new StringReader(xml)));
        String ip = doc.getElementsByTagName("ipAddr").item(0).getTextContent();
        String port = doc.getElementsByTagName("port").item(0).getTextContent();
        return "http://" + ip + ":" + port;
    }

Как вы можете видеть этот метод восстановления IP и PORT для использования в моем Feign Builder, посмотрите:

NfeClientAPI nfeClientAPI = Feign.builder().client(new OkHttpClient())
                .encoder(new GsonEncoder())
                .decoder(new GsonDecoder())
                .logger(new Slf4jLogger(NfeClientAPI.class))
                .logLevel(Logger.Level.FULL)
                .target(NfeClientAPI.class, getURLEurekaService("BRASILFISCAL-NFE"));

Итак, это работает хорошо, но я думаю, что очень многословно. С помощью Spring-Boot я могу использовать OpenFeign + Ribbon для автоматического обнаружения IP + PORT, без явного вызова Eureka Endpoint. Как я могу сделать это без весны?

...