Spring Cloud Netflix - 如何从传统网络应用访问 Eureka/Ribbon?

Spring Cloud Netflix - how to access Eureka/Ribbon from traditional web app?

我在互联网上找到的关于 Spring Cloud Netflix 的所有内容都是关于 运行 使用 @EnableEurekaClients 等从引导应用程序中宁微服务。

现在我正在尝试在传统的 war 应用程序(springmvc、jaxws 等)中连接我的日志记录微服务 - 无法转换为引导或以任何方式修改的遗留部分(通过技术任务) ).

我创建了一个新的 maven 模块 "log-server-client",它对上层 Web 层一无所知,并打算在任何 maven 项目中用作简单的依赖项。

我应该如何为这个简单的依赖配置对 Spring Cloud Netflix 的访问?至少,如何配置Eureka和Ribbon?

我刚刚从 RestTemplate 中提取了一些代码行并创建了我的自定义 JmsTemplate(微服务与使用 apache camel 和 activemq 的 jms 远程处理一起工作),在 [=13= 中是如何完成的],但这段代码仍然缺乏与基础设施的联系

afaik,我们可以创建一个全局单例bean,运行一个独立于这个bean的线程,运行从这个线程启动应用程序,但是你不觉得它很丑吗并可能导致问题?它究竟应该如何使用?

好问题!

一种方法是使用 "sidecar"。这似乎是一个伴随 Spring 引导应用程序,它代表您的传统 Web 应用程序向 Eureka 服务器注册。

参见示例:

http://www.java-allandsundry.com/2015/09/spring-cloud-sidecar.html

http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html#_polyglot_support_with_sidecar

另一种方法是使用以下库:

"A small lib to allow registration of legacy applications in Eureka service discovery."

https://github.com/sawano/eureka-legacy-registrar

这个库可以在 Spring Boot 之外使用。