L'API Modules propose des fonctions qui renvoient des informations sur l'environnement d'exploitation actuel (module, version et instance).
Elle comporte également des fonctions qui servent à récupérer l'adresse d'un module, d'une version ou d'une instance. Cela permet à une application d'envoyer des requêtes d'une instance à une autre dans les environnements de développement et de production.
L'exemple de code suivant montre comment obtenir le nom du module et l'ID d'instance pour une requête :
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();
L'ID d'instance d'un module avec scaling automatique est renvoyé sous forme de valeur unique encodée en base64, par exemple e4b565394caa
.
Vous pouvez communiquer avec les modules d'une même application en récupérant le nom d'hôte du module cible :
L'exemple de code suivant indique comment obtenir le nom du module et l'ID d'instance d'une requête :
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) {
// ...
}
Vous pouvez également utiliser le service de récupération d'URL.