我是否需要在使用它的每个微服务(模块)中或仅在根应用程序中定义数据存储索引?

我在一个带有几个微服务(模块)的应用程序上工作。 我在根应用程序中定义了数据存储区索引(它只包含那些cfg文件,如datastore-indexes.xml和queue.xml等)。 我在控制台中看到这些索引“正在服务”。 [编辑]所以我的错,我先前打破了查询,所以问题变化不大。 在多模块appengine应用程序中提到的cfg文件的最佳策略是什么?

数据存储区索引配置是应用程序级配置中的一种,由应用程序中的所有服务/模块共享,可以独立于服务本身进行部署。 事实上,建议首先部署索引配置,让GAE获取Serving状态(可能需要很长时间,具体取决于需要编制索引的实体数量),并且仅在部署需要这些索引的应用程序代码之后。

对于GAE目的的部署,索引配置是位于特定服务中还是位于应用程序的根目录中并不重要,只要它从该位置部署即可。

但是,如果没有该服务器目录中的索引配置,本地开发服务器可能无法运行特定服务 – 我怀疑这是导致您悲伤的原因。 为了在DRY精神中解决这个问题,我的首选是在app根目录中拥有配置文件的主副本,并将符号链接指向每个服务目录。

事情变得有点复杂,因为Java GAE使用datastore-indexes.xml配置文件,而其他语言使用index.yaml文件,具有不同的格式。 Java也支持index.yaml文件,但我不确定它是否在开发服务器,IDE和/或其他本地开发工具中同样得到了很好的支持。

如果您的所有模块都是基于Java的,那么您应该没问题。 但是如果你有多种语言,你可能不得不尝试共享一个index.yaml等价物。

如果这不起作用并且您被迫使用这两个文件,每个符号链接到相应的语言服务目录,您将必须确保2个文件中的索引配置是一致的,否则您可能会破坏某些服务。

可能感兴趣: Google App Engine应用中的默认服务/模块是否可以是文件夹结构方面的非默认服务/模块的兄弟?