使用Java查找AWS ElastiCache端点

时间:2012-03-13 20:06:40

标签: java amazon-web-services memcached amazon-elasticache

我尝试使用最新的Java AWS SDK以编程方式从我的Java应用程序中获取ElastiCache端点列表。事情似乎不起作用 - 我可以找到一个有效的CacheCluster,但是当我列出它的节点时,它是空的。这是我的代码:

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

当我运行它时,我得到以下输出:

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

这看起来很简单,但似乎无法奏效。我已经启动了一个带有单个节点的ElastiCache集群,但是当我调用getCacheNodes()时列表显示为空。我尝试在本地和EC2实例上运行此代码,我两次都得到同样的东西。

关于我可能做错的任何想法?

1 个答案:

答案 0 :(得分:7)

根据AWS团队对Not able to get cache nodes from ElastiCache cluster的回复,您需要使用可选的ShowDetails标志来通过方法Class DescribeCacheClustersRequestdescribeCacheClusters()参数获取CacheNodes信息 。仔细观察,虽然没有为此类记录,但是没有 ShowDetails 标志:

  

可选的ShowDetails标志可用于检索详细信息   有关与缓存集群关联的缓存节点的信息。   详细信息包括缓存节点端点的DNS地址和端口。

据推测,这实际上是setShowCacheNodeInfo()的目标,这是一个可选标志,可以包含在DescribeCacheCluster请求中以检索缓存节点信息

因此,AWS团队的响应似乎不精确,实际上并没有解决这个问题,为什么来自getCacheNodes()的方法Class CacheCluster没有返回该信息,这对于此类帖子来说都是不常见的。

无论如何,您可能只想尝试getCacheNodes()Class CacheCluster方法getCacheClusters()来自Class DescribeCacheClustersResult的方法{{3}},而希望它可以像宣传的那样工作(即我没有'我自己试过这个。)

祝你好运!


更新

以下是Sander成功实现其目标的代码,确认了上述方法:

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

DescribeCacheClustersResult clusterResult = client.describeCacheClusters(dccRequest);

缺失的部分应与他的初始解决方案类似,例如:

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

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