我使用多个微服务(模块)处理应用程序。我在根应用程序中定义了数据存储区索引(它只包含那些cfg文件,如datastore-indexes.xml和queue.xml等)。我在控制台中看到这些索引“正在服务”。 [编辑]所以我的错,我先前打破了查询,所以问题变化不大。在多模块appengine应用程序中提到的cfg文件的最佳策略是什么?
答案 0 :(得分:4)
数据存储区索引配置是几种应用级配置之一,由应用中的所有服务/模块共享,可以独立于服务本身进行部署。事实上,建议首先部署索引配置,让GAE获取Serving
状态(可能需要一段时间,取决于需要编制索引的实体数量)并且仅在部署应用程序代码之后需要那些索引。
对于GAE目的的部署,只要索引配置位于特定服务或应用程序的根目录中,只要从该位置部署它就无关紧要。
但是,如果没有该服务器目录中的索引配置,本地开发服务器可能无法运行特定服务 - 我怀疑这是导致您悲伤的原因。为了在DRY精神中解决这个问题,我的首选是在app根目录中有一个配置文件的主副本,并将符号链接指向每个服务目录。
事情变得有点复杂,因为Java GAE使用datastore-indexes.xml
配置文件,而其他语言使用index.yaml
文件,格式不同。 Java还支持index.yaml
文件,但我不确定在开发服务器,IDE和/或其他本地开发工具中是否同样支持它。
如果您的所有模块都是基于Java的,那么您应该没问题。但是如果你有各种语言,你可能不得不尝试共享index.yaml
等价物。
如果这不起作用并且您被迫使用这两个文件,每个符号链接到相应的语言服务目录,您将必须确保2个文件中的索引配置是一致的,否则您可能会破坏一些服务。