Spring boot 是否可以使用VCAP服务中的应用程序名称动态获取应用程序uri

Spring boot 是否可以使用VCAP服务中的应用程序名称动态获取应用程序uri,spring-boot,cloud-foundry,Spring Boot,Cloud Foundry,假设我们在Cloud Foundry中部署了一个名为app1的Spring Boot应用程序,如果我们需要从另一个Spring Boot应用程序获取该应用程序的URI,那么就说同样部署在Cloud Foundry相同空间上的app2。在app2代码中给出如下内容是否可行 ${vcap.application.app1.uris[0]}//如果在app2的application.yml中使用此选项,则无法执行此操作。由于应用程序在它们自己的容器中运行,因此即使它们在同一个空间中,环境变量也不会在应

假设我们在Cloud Foundry中部署了一个名为app1的Spring Boot应用程序,如果我们需要从另一个Spring Boot应用程序获取该应用程序的URI,那么就说同样部署在Cloud Foundry相同空间上的app2。在app2代码中给出如下内容是否可行


${vcap.application.app1.uris[0]}//如果在app2的application.yml中使用此选项,则无法执行此操作。由于应用程序在它们自己的容器中运行,因此即使它们在同一个空间中,环境变量也不会在应用程序之间共享


如果您知道app1正在使用的路由,那么您可以使用app2的应用程序URI[0]来替换和使用。

这有点反模式,我当然不建议部署任何具有凭据的应用程序来与云控制器对话。为此使用某种服务发现框架会更合适,就像或

酷!因此,应用程序属性不能在其他应用程序之间共享,就像我们在绑定后如何在应用程序之间共享服务属性一样,因为这里没有应用程序绑定概念。对吗?没错。。。CF支持服务绑定,所以绑定服务的属性被创建为一个env变量。但是没有应用程序绑定概念,因此,您不能在应用程序之间共享env变量。如果您正在使用Spring Cuy,那么您可以考虑使用EUKEA服务来从Netflix OSS服务发现。如果您需要在应用程序之间传递数据的快速简便的方法,比如您的服务的URL,可以绑定用户提供的服务或使用CF SET Env。当您需要动态发现并适应更改时,您需要开始关注服务发现。如果通过用户提供的service/env变量传入URL,则只能通过更新service/env变量并重新启动使用该变量的应用程序来更新URL。服务发现是动态的,无需重新启动使用服务即可进行调整。