我正在尝试使用最新的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群集,但是当我调用getCachenode()时,列表会出现空。我试图在本地和EC2实例上运行此代码,并且我两次都得到同样的事情。

关于我可能做错的事情?

有帮助吗?

解决方案

根据AWS团队响应无法从中获取缓存节点ElastiCache Cluster 您将需要使用可选的ShowDetails标志来获取通过 /amazonaws/services/elastiche/elastache/model/describecacheclustersrequest.html“rel=”noreferrer“> class destriblecacheclustersrequest 方法 describeCacheclusters()。仔细观察没有 ShowDetails 标志,尽管确实为此课程记录了:

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

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

所以AWS团队反应似乎是不精确的,实际上没有解决这个问题,为什么方法 getcachenodes() class cachecluster 没有返回该信息,这两个帖子都非常不寻常。

无论如何,您可能只是想尝试方法 getcachenode()来自 class cachecluster 按方法 getcacheclusters()来自 class descripecacheclustersresult 相反,希望它适用于已宣传(即我自己没有尝试过这个)。

祝你好运!


更新

这里是代码砂光机成功实现他的目标,确认上面概述的方法:

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top