java - 使用 Java 查找 AWS ElastiCache 终端节点

标签 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 实例上运行此代码,但两次都得到相同的结果。

关于我可能做错了什么有什么想法吗?

最佳答案

根据 AWS 团队对 Not able to get cache nodes from ElastiCache cluster 的回复您将需要使用可选的 ShowDetails 标志通过 Class DescribeCacheClustersRequest 获取缓存节点信息方法参数describeCacheClusters() .仔细观察没有ShowDetails 标志,尽管确实为此类记录:

An optional ShowDetails flag can be used to retrieve detailed information about the Cache Nodes associated with the Cache Cluster. Details include the DNS address and port for the Cache Node endpoint.

大概这实际上是针对 setShowCacheNodeInfo() ,这是一个可选标志,可以包含在 DescribeCacheCluster 请求中以检索缓存节点信息。

所以 AWS 团队的回应似乎不准确,实际上并没有解决这个问题,为什么方法 getCacheNodes()来自 Class CacheCluster不会返回该信息,对于此类帖子来说这两种情况都很不寻常。

无论如何,您可能只想尝试方法 getCacheNodes()来自 Class CacheCluster由方法返回 getCacheClusters()来自 Class DescribeCacheClustersResult相反,希望它像宣传的那样有效(即我自己还没有尝试过)。

祝你好运!


更新

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

关于java - 使用 Java 查找 AWS ElastiCache 终端节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9691276/

相关文章:

java - 如何使用父类(super class)的实例访问子类的重写变量

python - IAM角色的bo​​to问题

node.js - AWS 上的媒体转换

memcached - 使用内存缓存,您可以动态添加/远程节点吗?

java - 将spymemcached Java 客户端GetFuture 适配为Guava ListenableFuture

java - Future 和 ExecutorService,如何知道取消的任务何时终止?

java - JUnit:调用@After 将对象设置为 Null

java - 是否可以实现 RMI 自动化?

amazon-web-services - 在 AWS Lightsail 上使用 SSL 托管多个域

ruby-on-rails - 获取/创建空缓存时该怎么办?内存缓存,Rails 3