2015-05-21 1 views
2

Мне нужно получить конечную точку для кластера Redis в Amazon Elasticache. Следующий код работает для Memcached кластера, но не для Redis:Amazon Elasticache Redis cluster - Не удается получить конечную точку

import com.amazonaws.auth.AWSCredentials; 
import com.amazonaws.auth.profile.ProfileCredentialsProvider; 
import com.amazonaws.regions.Regions; 

import com.amazonaws.services.elasticache.AmazonElastiCacheClient; 
import com.amazonaws.services.elasticache.model.DescribeCacheClustersRequest; 
import com.amazonaws.services.elasticache.model.DescribeCacheClustersResult; 
import com.amazonaws.services.elasticache.model.CacheNode; 
import com.amazonaws.services.elasticache.model.CacheCluster; 
import com.amazonaws.services.elasticache.model.Endpoint; 

public class Redis { 
    public static void main(String[] args) { 
     AWSCredentials credentials = 
      new ProfileCredentialsProvider("default").getCredentials(); 
     AmazonElastiCacheClient amazonClient = new AmazonElastiCacheClient(credentials); 
     amazonClient.setRegion(Regions.EU_WEST_1); 
     DescribeCacheClustersRequest dccRequest = new DescribeCacheClustersRequest(); 
     dccRequest.setShowCacheNodeInfo(true); 
     dccRequest.withCacheClusterId("app-001"); 
     DescribeCacheClustersResult clusterResult = 
      amazonClient.describeCacheClusters(dccRequest); 

     CacheCluster cacheCluster = clusterResult.getCacheClusters().get(0); 
     System.out.println("cluster: " + cacheCluster); 
     System.out.println("endpoint: " + cacheCluster.getConfigurationEndpoint()); 
    } 
} 

Выход:

cluster: {CacheClusterId: app-001,ClientDownloadLandingPage: https://console.aws.amazon.com/elasticache/home#client-download:,CacheNodeType: cache.r3.large,Engine: redis,EngineVersion: 2.8.19,CacheClusterStatus: available,NumCacheNodes: 1,PreferredAvailabilityZone: eu-west-1a,CacheClusterCreateTime: Thu May 21 11:43:03 CEST 2015,PreferredMaintenanceWindow: mon:04:00-mon:05:00,PendingModifiedValues: {CacheNodeIdsToRemove: [],},CacheSecurityGroups: [],CacheParameterGroup: {CacheParameterGroupName: default.redis2.8,ParameterApplyStatus: in-sync,CacheNodeIdsToReboot: []},CacheSubnetGroupName: default,CacheNodes: [{CacheNodeId: 0001,CacheNodeStatus: available,CacheNodeCreateTime: Thu May 21 11:43:03 CEST 2015,Endpoint: {Address: app-001.3pusxn.0001.euw1.cache.amazonaws.com,Port: 6379},ParameterGroupStatus: in-sync,CustomerAvailabilityZone: eu-west-1a}],AutoMinorVersionUpgrade: true,SecurityGroups: [{SecurityGroupId: sg-3231f657,Status: active}],ReplicationGroupId: app,SnapshotRetentionLimit: 0,SnapshotWindow: 22:00-23:00} 
endpoint: null 

Обратите внимание, как объект кластера содержит сведения о конечной точке (ключ: Endpoint), но тем не менее getConfigurationEndpointnull.

Как получить конечную точку?

ответ

1

Как обычно бывает, я нашел решение сразу после размещения вопроса. В Redis у вас есть доступ к узлам кэша:

cacheCluster.getCacheNodes().get(0).getEndpoint()); 
+0

Я использую AWS REDIS кластера в первый раз, и я хочу знать, что, как вы установите данные в Redis (либо с помощью эластичного кэша или какой-либо другой REDIS клиента, как Jedis). Какой из них рекомендуется? – rahul

Смежные вопросы