如何配置 Apache Camel 的 serviceCall 在 Eureka 服务发现中查找服务?
How to configure Apache Camel's serviceCall to look for services in Eureka service discovery?
我正在做一个项目,我被迫不使用 Spring Boot。我在 localhost:8090 上有一个 Eureka 服务器 运行,并且已经在上面注册了一些服务。
如何强制 Apache Camel 的 serviceCall 在 Eureka 服务器上寻找服务?
我知道要使其作为服务发现对 Consul 起作用,您应该执行以下操作:
ConsulConfiguration config = new ConsulConfiguration();
config.setUrl("http://ip:port");
ConsulServiceDiscovery discovery = new ConsulServiceDiscovery(config);
// configure camel service call
ServiceCallConfigurationDefinition config = new ServiceCallConfigurationDefinition();
//config.setServiceDiscovery(servers);
// register configuration
camelContext.setServiceCallConfiguration(config);
如何让它在 localhost:8090 上用于 Eureka 服务器??
camel 中没有对 eureka 的直接支持,所以如果你不能使用 spring-boot,你需要构建自己的 ServiceDiscovery 实现
正如@Luca 所建议的那样,经过一些研究,我得出了这个结论,即您应该实施自定义服务发现以从 Eureka 读取数据。为此,我执行了以下操作:
- 从 camel-core 模块的 DefaultServiceDiscovery class 扩展我的 EurekaServiceDiscovery class
- 覆盖方法public List getServices(String name)
DefaultServiceDiscovery class 负责从 Eureka 检索服务
- 使用Eureka REST API获取覆盖方法中的所有服务。为了做到这一点,您应该将收到的 JSON 数据从 Eureka REST API 转换为适当的 java classes。您需要根据这些 JSON 数据定义 Application 和 InstanceInfo classes。
例如运行Eureka在localhost:8090上注册一个名为account-service的服务后,可以git账户信息- 通过向 localhost:8090/eureka/apps/account-service
发送 Http.GET 请求来提供服务
有关详细信息,请查看此 Github 存储库:https://github.com/hamedmirzaei/service-gateway-bootless
我正在做一个项目,我被迫不使用 Spring Boot。我在 localhost:8090 上有一个 Eureka 服务器 运行,并且已经在上面注册了一些服务。 如何强制 Apache Camel 的 serviceCall 在 Eureka 服务器上寻找服务? 我知道要使其作为服务发现对 Consul 起作用,您应该执行以下操作:
ConsulConfiguration config = new ConsulConfiguration();
config.setUrl("http://ip:port");
ConsulServiceDiscovery discovery = new ConsulServiceDiscovery(config);
// configure camel service call
ServiceCallConfigurationDefinition config = new ServiceCallConfigurationDefinition();
//config.setServiceDiscovery(servers);
// register configuration
camelContext.setServiceCallConfiguration(config);
如何让它在 localhost:8090 上用于 Eureka 服务器??
camel 中没有对 eureka 的直接支持,所以如果你不能使用 spring-boot,你需要构建自己的 ServiceDiscovery 实现
正如@Luca 所建议的那样,经过一些研究,我得出了这个结论,即您应该实施自定义服务发现以从 Eureka 读取数据。为此,我执行了以下操作:
- 从 camel-core 模块的 DefaultServiceDiscovery class 扩展我的 EurekaServiceDiscovery class
- 覆盖方法public List getServices(String name) DefaultServiceDiscovery class 负责从 Eureka 检索服务
- 使用Eureka REST API获取覆盖方法中的所有服务。为了做到这一点,您应该将收到的 JSON 数据从 Eureka REST API 转换为适当的 java classes。您需要根据这些 JSON 数据定义 Application 和 InstanceInfo classes。
例如运行Eureka在localhost:8090上注册一个名为account-service的服务后,可以git账户信息- 通过向 localhost:8090/eureka/apps/account-service
发送 Http.GET 请求来提供服务有关详细信息,请查看此 Github 存储库:https://github.com/hamedmirzaei/service-gateway-bootless