我正在研究一个使用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 中是否有一个方法,该方法在表变为活动状态后立即返回。
答案 0 :(得分:0)
我已经用GO语言实现了解决方案。
这是摘要。
您必须使用API-DescribeTable
或相应的API。
此API的输入为DescribeTableInput
,您可以在其中指定表名称。
您将需要循环轮询直到表变为活动状态。
Describe表的输出将为您提供表的状态(结果。Table.TableStatus
)
如果状态为“ 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