Modules API verwenden

Die Modules API bietet Funktionen, die Informationen zur aktuellen Betriebsumgebung (Modul, Version und Instanz) zurückgeben.

Außerdem verfügt die Modules API über Funktionen zum Abrufen der Adresse eines Moduls, einer Version oder einer Instanz. Auf diese Weise kann eine Anwendung sowohl in Entwicklungs- als auch in Produktionsumgebungen Anfragen von einer Instanz an eine andere senden.

Das folgende Codebeispiel zeigt, wie der Modulname und die Instanz-ID für einen Request abgerufen werden:

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();

Die Instanz-ID eines automatisch skalierten Moduls wird als eindeutiger base64-codierter Wert zurückgegeben, z. B. e4b565394caa.

Sie können zwischen Modulen in derselben Anwendung kommunizieren. Rufen Sie dazu den Hostnamen des Zielmoduls ab:

Das folgende Codebeispiel zeigt, wie Sie den Modulnamen und die Instanz-ID für eine Anfrage abrufen können:

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) {
        // ...
    }

Sie können auch den URL-Abrufdienst verwenden.