com.amazonaws.AmazonClientException: Unable to execute HTTP request: Connection reset
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:324)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:164)
at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:985)
at com.amazonaws.services.dynamodb.AmazonDynamoDBClient.batchWriteItem(AmazonDynamoDBClient.java:365)
.
.
.
上面的异常在尝试运行以下code sample时被捕获。AWS DynamoDB Java BatchWriteItem连接重置错误
BatchWriteItemResult result;
BatchWriteItemRequest batchWriteItemRequest = new BatchWriteItemRequest();
do {
System.out.println("Making the request.");
batchWriteItemRequest.withRequestItems(requestItems);
result = client.batchWriteItem(batchWriteItemRequest);
// Print consumed capacity units
for(Map.Entry<String, BatchWriteResponse> entry : result.getResponses().entrySet()) {
String tableName = entry.getKey();
Double consumedCapacityUnits = entry.getValue().getConsumedCapacityUnits();
System.out.println("Consumed capacity units for table " + tableName + ": " + consumedCapacityUnits);
}
// Check for unprocessed keys which could happen if you exceed provisioned throughput
System.out.println("Unprocessed Put and Delete requests: \n" + result.getUnprocessedItems());
requestItems = result.getUnprocessedItems();
} while (result.getUnprocessedItems().size() > 0);
我有1个表设置了8个写入单元配置。
在我的BatchWriteItemRequest
我有9 PutRequestItems
。
当while循环中第一次处理9个PutRequestItems中的8个时。 因此,循环再次进入,试图处理剩下的一个请求。
但是,代码会在 result = client.batchWriteItem(batchWriteItemRequest);
处挂起大约149秒。之后,抛出上述异常。
似乎绕过这个的唯一方法是设置一个更高的写入提供单元。但是,是不是通过while-do循环来处理超出我们配置的写入单元的情况?
有多大你试图存储9个项目?您是否检查过您的请求没有中断? – yadutaf
他们每个人都有9个字段,最大的字段是一个String字段,大约少于100个字符。 – ethangui
我不相信有中断,因为1,第一个8/9项是很快写入db的; 2,当我从Dynamo管理控制台将我的写入单元超过9个时,所有9个项目都被写入。 – ethangui