2016-12-18 1 views
2

: DynamoDB - shutdown()을 호출해야합니까? 이 코드를 고려

QuerySpec spec = new QuerySpec()     
    .withKeyConditionExpression("#1 = :v1") 
    .withNameMap(new NameMap().with("#1", "tableKey"))    
    .withValueMap(new ValueMap().withString(":v1", "none.json")); 


//connect DynamoDB instance over AWS 
DynamoDB dynamoDB = new DynamoDB(Regions.US_WEST_2); 

//get the table instance 

String tableName = "WFMHistoricalProcessedFiles"; 

Table table = dynamoDB.getTable(tableName); 


ItemCollection<QueryOutcome> items = table.query(spec); 

//getting over the results 
Iterator<Item> it = items.iterator(); 
Item item = null; 
while (it.hasNext()) { 
    item = it.next(); 
    System.out.println(item.toJSONPretty()); 
} 

어떤 쿼리 또는 위의 예에서와 같이 스캔을 만들기 위해 DynamoDB의를 사용하는 동안.

연결을 종료하기 위해 shutdown()으로 전화해야하는 실제 필요가 있습니까?

답변

2

설명서가 매우 분명해 보입니다.

종료 개방 개최 될 수있는 모든 리소스를 해제이 클라이언트 오브젝트 아래로

void shutdown()

종료. 이것은 선택적인 방법이며 호출자는 호출 할 것으로 예상되지 않지만 열려있는 자원을 명시 적으로 해제하려는 경우 호출자가 호출 할 수 있습니다. 클라이언트가 종료되면 더 이상 요청하지 않아야합니다.

특별히에 대한 질문 무엇을 명확히하는 그러나

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/AmazonDynamoDB.html#shutdown--

: 연결을 종료하기 위해

?

정확하게 DynamoDB에 대한 "연결"이 없습니다. 요청이 전송 될 때 HTTPS를 통해 상태에 관계없이 액세스됩니다. 코드가 // connect DynamoDB instance over AWS인데 실제로는 정확하지 않습니다. table.query()에 전화 할 때까지 실제로 연결하지 않는 개체를 만들고 있습니다.

이 연결은 나중에 재사용을 위해 잠시 동안 유지 될 수 있지만 실제로 true 인 경우 의미있는 의미로 DynamoDB에 "연결"되지 않습니다. 기껏해야 AWS 내부의 프런트 엔드 시스템에 연결되어 다음 요청을 감시하고 문법적으로 유효하고 권한이있는 경우 해당 요청을 DynamoDB로 전달합니다.

그러나이 유휴 연결은 응용 프로그램 또는 동일한 DynamoDB 테이블에 액세스하는 다른 사용자의 성능을 저하시키는 방식으로 DynamoDB 리소스를 사용하지 않습니다.

좋은 사례는 무언가를 청소할 수있는 옵션이 있다면 잠재적으로 그렇게하는 것이 좋지만 분명히 선택적인 것으로 보입니다.

관련 문제