使用 Modules API

Modules API 提供可以傳回現行作業環境相關資訊 (模組、版本與執行個體) 的函式。

Modules API 也提供擷取模組、版本或執行個體位址的函式。如此可讓應用程式不論是在開發環境還是實際工作環境中,都能從某個執行個體傳送要求到至另一個執行個體。

下列程式碼範例示範如何取得要求的模組名稱和執行個體 ID:

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

自動調整大小的模組會以 Base64 編碼的值 (例如 e4b565394caa) 傳回其 instance ID。

只要擷取目標模組的主機名稱,就可以在同一應用程式的不同模組之間進行通訊:

下列程式碼範例示範如何取得要求的模組名稱和執行個體 ID:

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

您也可以使用網址擷取服務。