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

自动扩缩模块的实例 ID 将作为唯一的 Base64 编码值返回,例如 e4b565394caa

您可以在同一个应用的不同模块之间通信,只需提取目标模块的主机名即可:

以下代码示例演示了如何获取请求的模块名称和实例 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) {
        // ...
    }

您还可以使用网址提取服务。