Utilizar la API Modules

La API Modules proporciona funciones que devuelven información sobre el entorno operativo actual (módulo, versión e instancia).

La API Modules también tiene funciones que recuperan la dirección de un módulo, una versión o una instancia. Esto permite que una aplicación envíe solicitudes de una instancia a otra, tanto en el entorno de desarrollo como en el de producción.

En el siguiente código de ejemplo se muestra cómo obtener el nombre del módulo y el ID de instancia de una solicitud:

import com.google.appengine.api.modules.ModulesService;
import com.google.appengine.api.modules.ModulesServiceFactory;

ModulesService modulesApi = ModulesServiceFactory.getModulesService();

// Get the service name handling the current request.
String currentModuleName = modulesApi.getCurrentModule();
// Get the instance handling the current request.
int currentInstance = modulesApi.getCurrentInstance();

El ID de instancia de un módulo escalado automáticamente se devolverá como un valor único codificado en base64, por ejemplo, e4b565394caa.

Puedes comunicarte entre módulos de la misma aplicación obteniendo el nombre de host del módulo de destino:

En el siguiente código de ejemplo se muestra cómo obtener el nombre del módulo y el ID de instancia de una solicitud:

import com.google.appengine.api.modules.ModulesService;
import com.google.appengine.api.modules.ModulesServiceFactory;

import java.net.MalformedURLException;
import java.net.URL;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

// ...

ModulesService modulesApi = ModulesServiceFactory.getModulesService();

// ...
    try {
        URL url = new URL("http://" +
            modulesApi.getVersionHostname("my-backend-service","v1") +
            "/fetch-stats");
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(url.openStream()));
        String line;

        while ((line = reader.readLine()) != null) {
            // Do something...
        }
        reader.close();

    } catch (MalformedURLException e) {
        // ...
    } catch (IOException e) {
        // ...
    }

También puedes usar el servicio URL Fetch.