A API Modules oferece funções que retornam informações sobre o ambiente operacional atual (módulo, versão e instância).
A API Modules também tem funções que recuperam o endereço de um módulo, uma versão ou uma instância. Isso permite que um aplicativo envie solicitações de uma instância para outra, tanto nos ambientes de desenvolvimento quanto de produção.
O seguinte exemplo de código mostra como obter o nome do módulo e o ID da instância para uma solicitação:
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();
O ID da instância de um módulo com escalonamento automático será retornado como um valor
exclusivo com codificação base64, por exemplo e4b565394caa.
É possível estabelecer comunicação entre os módulos no mesmo app, buscando o nome do host do módulo de destino:
Veja na seguinte amostra de código como saber o nome do módulo e o código da instância para uma solicitação:
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) {
// ...
}
Também é possível usar o serviço Busca de URL.