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

URL Fetch 서비스도 사용할 수 있습니다.