Apache camel 如何配置Apache Camel';s serviceCall在Eureka service discovery中查找服务?

Apache camel 如何配置Apache Camel';s serviceCall在Eureka service discovery中查找服务?,apache-camel,microservices,netflix-eureka,service-discovery,Apache Camel,Microservices,Netflix Eureka,Service Discovery,我正在做一个项目,我被迫不使用SpringBoot。我有一个运行在localhost:8090上的Eureka服务器,一些服务已经在上面注册了。 如何强制Apache Camel的serviceCall在Eureka服务器上查找服务? 我知道,要使其作为服务发现为Consor服务,您应该执行以下操作: ConsulConfiguration config = new ConsulConfiguration(); config.setUrl("http://ip:port"); ConsulSer

我正在做一个项目,我被迫不使用SpringBoot。我有一个运行在localhost:8090上的Eureka服务器,一些服务已经在上面注册了。 如何强制Apache Camel的serviceCall在Eureka服务器上查找服务? 我知道,要使其作为服务发现为Consor服务,您应该执行以下操作:

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);

如何在本地主机上为Eureka服务器工作:8090???

camel中没有对Eureka的直接支持,因此如果无法使用spring boot,则需要构建自己的ServiceDiscovery实现

camel中没有对Eureka的直接支持,因此如果无法使用spring boot,您需要按照@Luca的建议构建自己的服务发现实现

,经过一些研究,我得出了这样的结论:您应该实现一个定制的服务发现,以从Eureka中读取。为此,我做了以下工作:

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);
  • 从camel核心模块的类扩展我的EurekaServiceDiscovery类
  • 重写的方法public List getServices(字符串名称) DefaultServiceDiscovery类,负责从Eureka检索服务
  • 用于获取重写方法中的所有服务。为此,您应该将接收到的来自Eureka REST API的JSON数据转换为适当的java类。您需要基于这些JSON数据定义应用程序和InstanceInfo类
  • 例如,在localhost:8090上运行Eureka并在其上注册名为account service的服务后,可以通过向localhost:8090/Eureka/apps/account service发送Http.GET请求来获取account service的git信息


    有关更多信息,请查看此Github repo:

    ,正如@Luca所建议的,经过一些研究,我得出了这样的结论:您应该实现一个定制服务发现,以从Eureka读取。为此,我做了以下工作:

    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);
    
  • 从camel核心模块的类扩展我的EurekaServiceDiscovery类
  • 重写的方法public List getServices(字符串名称) DefaultServiceDiscovery类,负责从Eureka检索服务
  • 用于获取重写方法中的所有服务。为此,您应该将接收到的来自Eureka REST API的JSON数据转换为适当的java类。您需要基于这些JSON数据定义应用程序和InstanceInfo类
  • 例如,在localhost:8090上运行Eureka并在其上注册名为account service的服务后,可以通过向localhost:8090/Eureka/apps/account service发送Http.GET请求来获取account service的git信息


    有关更多信息,请查看此Github repo:

    如果是这种情况,camel如何在spring boot中发现eureka?!我的意思是应该有一些配置它确实利用了spring云服务发现API,所以实际的实现对于camel来说是隐藏的。如果是这样的话,camel是如何在spring boot中发现eureka的?!我的意思是应该有一些配置,它确实利用了spring云服务发现API,所以实际的实现是隐藏的