DynamoDB等待表变为活动状态

时间:2019-07-04 12:46:59

标签: java spring-boot amazon-dynamodb

我正在研究一个使用dynamoDB作为数据库的项目。

我使用了 import com.amazonaws.services.dynamodbv2.util.TableUtils的 TableUtils 创建表(如果不存在)。

CreateTableRequest tableRequest = dynamoDBMapper.generateCreateTableRequest(cls);
tableRequest.setProvisionedThroughput(new ProvisionedThroughput(5L, 5L));
boolean created = TableUtils.createTableIfNotExists(amazonDynamoDB, tableRequest);

现在,创建表后,我必须在数据处于活动状态时将其推送。 我看到有一种方法可以做到这一点

 try {
    TableUtils.waitUntilActive(amazonDynamoDB, cls.getSimpleName());
    } catch (Exception e) {
    // TODO: handle exception
}

但这需要10分钟。

TableUtils 中是否有一个方法,该方法在表变为活动状态后立即返回。

2 个答案:

答案 0 :(得分:0)

我已经用GO语言实现了解决方案。

这是摘要。

  1. 您必须使用API​​-DescribeTable或相应的API。

  2. 此API的输入为DescribeTableInput,您可以在其中指定表名称。

  3. 您将需要循环轮询直到表变为活动状态。

  4. Describe表的输出将为您提供表的状态(结果。Table.TableStatus

  5. 如果状态为“ ACTIVE”,则可以插入信息。否则,您将需要继续循环。

以我为例,这些表在不到一分钟的时间内就变为活动状态。

答案 1 :(得分:0)

您可以尝试以下操作。

Table table = dynamoDB.createTable(request);
System.out.println("Waiting for " + tableName + " to be created...this may take a while...");
table.waitForActive();

有关更多信息,请查看此链接。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AppendixSampleDataCodeJava.html