Domanda

Sto cercando di ottenere programmaticamente un elenco di endpoint elasticizzati dalla mia app Java utilizzando l'ultimo SDK Java AWS.Le cose non sembrano lavorare - posso trovare un cachecluster valido, ma poi quando elenco i suoi nodi, è vuoto.Ecco il mio codice:

CacheCluster cc = it.next();

System.out.println("Cache node type: " + cc.getCacheNodeType());
System.out.println("Number cache nodes: " + cc.getNumCacheNodes());

List<CacheNode> listCache = cc.getCacheNodes();

System.out.println("List size: " + listCache.size());
.

Quando lo eseguo, ottengo la seguente uscita:

Cache node type: cache.m1.small 
Number cache nodes: 1 
List size: 0
.

Questo sembra così semplice, ma non sembra funzionare.Ho iniziato un cluster elasticizzato con un singolo nodo, ma l'elenco viene vuoto quando chiamo getcachenodes ().Ho provato a gestire questo codice localmente e su un'istanza EC2, e ottengo la stessa cosa sia i tempi.

Qualche idea su ciò che potrei sbagliare?

È stato utile?

Soluzione

Secondo la risposta del team AWS a non in grado di ottenere nodi cache da ELASTISCHACE CLUSTER ABBRIMENTO è necessario utilizzare il flag opzionale ShowDetails per ottenere le informazioni di cachenodi tramite classe descrizioneCacheClusterRequest Parametro del metodo DescrivereCacheCluster () . Guardando più vicino non ci sono showdetails flag però, nonostante sia documentato per questa classe:

.

Un flag ShowDetails opzionale può essere utilizzato per recuperare dettagliato Informazioni sui nodi della cache associati al cluster cache. I dettagli includono l'indirizzo e la porta DNS per il punto finale del nodo della cache.

Presumibilmente questo in realtà bersagli SETSHOWCACHENODEINFO () , che è un flag opzionale che può essere incluso nella richiesta DescriptioneCacheCluster per recuperare le informazioni sui nodi della cache .

Quindi la risposta del team AWS sembra impreciso e in realtà non sta affrontando la domanda, perché il metodo getcachenodes () da Classe Cachecluster non restituisce tali informazioni, sia piuttosto insolite per tali post.

Ad ogni modo, potresti semplicemente provare il metodo getcachenodes () da class cachecluster come restituito per metodo GetCacheCusters () <) <) <) Classe DescriveCacheClusTrsResult Invece, si spera che funzioni come pubblicizzato (cioè non l'ho provato da solo).

Buona fortuna!


.

Aggiornamento

Ecco il codice SANDER utilizzato con successo per raggiungere il suo obiettivo, confermando l'approccio descritto sopra:

AmazonElastiCacheClient client = new AmazonElastiCacheClient(credentials);
DescribeCacheClustersRequest dccRequest = new DescribeCacheClustersRequest();
dccRequest.setShowCacheNodeInfo(true);

DescribeCacheClustersResult clusterResult = client.describeCacheClusters(dccRequest);
.

I pezzi mancanti dovrebbero essere simili alla sua soluzione iniziale, ad esempio.:

List<CacheCluster> cacheClusters = clusterResult.getCacheClusters();
for (CacheCluster cacheCluster : cacheClusters) {
    List<CacheNode> cacheNodes = cacheCluster.getCacheNodes();

    System.out.println("List size: " + cacheNodes.size());
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top