Невозможно совместно использовать Taskqueue и Datastore среди служб для разработки на локальном компьютере - стандартная среда Java App Engine Google - PullRequest
0 голосов
/ 27 июня 2018

приложение GAE с несколькими услугами:

module_1 - default
module_2 - backend using datastore
module_3 - Taskqueues and cron job

module_2 добавляется как зависимость в module_3 и использует тот же экземпляр datastore, который используется в module_2. Все модули (1, 2, 3 и хранилище данных) находятся на разных виртуальных машинах, развернутых в тестовой и рабочей среде.

Тот же код, который я развертываю на локальной машине разработки, используя команду gradle appengineRun все три модуля <project_home>/module_<1/2/3>$ gradle appengineRun, весь проект создает собственное хранилище данных и задачи.

Пробовал следующее:

1. dispatcher.xml

<?xml version="1.0" encoding="UTF-8"?>
<dispatch-entries>
    <dispatch>
        <!-- Default module serves the typical web resources and all static resources. -->
        <url>*/favicon.ico</url>
        <module>module_1</module>
    </dispatch>
    <dispatch>
        <!-- Default module serves simple hostname request. -->
        <url>simple-sample.appspot.com/</url>
        <module>module_1</module>
    </dispatch>
    <dispatch>
        <!-- Send all mobile traffic to the mobile frontend. -->
        <url>*/v2/*</url>
        <module>module_2</module>
    </dispatch>
    <dispatch>
        <!-- Send all work to the one static backend. -->
        <url>*/v3/*</url>
        <module>module_3</module>
    </dispatch>
</dispatch-entries>
  1. Преобразование бэкэнда в сервисы : Если вы еще не пробовали, это потребует большого количества рефакторинга, например, фильмов cron.xml и queue.xml с module_3 до module_1. Поскольку эта система работает с одинаковой конфигурацией на стадии и в производстве, должен быть способ заставить ее работать локально.
  1. Настройка конфигурации локального хранилища данных для Java DevServer

1 Ответ

0 голосов
/ 27 июня 2018

Независимо от того, на самом деле вы конвертируете свои бэкэнды в сервисы или нет, вам нужно иметь в виду, что конфигурации очереди, индекса хранилища данных, cron и dispatch являются конфигурациями уровня приложения, общими для всех сервисов приложения (это не имеет значения из какой службы они фактически развернуты). Но при локальной разработке серверу разработки могут потребоваться некоторые из этих файлов, которые фактически присутствуют в каждой службе (и содержат конфигурации, согласованные между службами). См. Как-то связанный Нужно ли определять индексы хранилища данных в каждом микросервисе (модуле), который его использует, или просто в корневом приложении? . Подобный подход может быть применен к другим общим конфигам уровня приложения, если необходимо.

Поскольку ваши службы совместно используют хранилище данных, для правильного выполнения локальной разработки вам также потребуется эмуляция хранилища данных . Это означает либо:

Но я не пользователь Java, я не уверен, точно ли / как эти подходы будут работать для java, сервер разработки сильно отличается от того, который я использую на python.

Примечание: вам не нужно добавлять правила отправки для модуля default - вот где в любом случае по умолчанию отправляются запросы, не соответствующие другим правилам отправки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...