表格存储提供了ListStream和DescribeStream接口用于查看表的Stream信息,以及GetShardIterator和GetStreamRecord接口用于获取Stream下Shard的起始迭代值和更新信息。
列出所有的Stream(ListStream)
调用ListStream接口列出当前实例和表下的所有Stream信息。
以下示例用于列出某个表的所有Stream信息。
private static void listStream(SyncClient client, String tableName) {
ListStreamRequest listStreamRequest = new ListStreamRequest(tableName);
ListStreamResponse result = client.listStream(listStreamRequest);
System.out.println(result.getStreams());
}
查询表Stream描述信息(DescribeStream)
调用DescribeStream接口查询Stream的创建时间(creationTime)、过期时间(expirationTime)、当前的状态(status) 、包含shard的列表(shards)和下一个起始shard的id(如果还有尚未返回的shard)。
您可以获取当前Stream的所有Shard信息或者根据指定条件获取满足指定条件的Shard信息。
获取Stream的所有Shard信息
以下示例用于获取当前Stream的所有Shard信息。
private static void describeStream(SyncClient client, String streamId) {
DescribeStreamRequest desRequest = new DescribeStreamRequest(streamId);
DescribeStreamResponse desStream = client.describeStream(desRequest);
// 打印Shard信息。
System.out.println("Shard Info: " + desStream.getShards());
// 打印创建时间,单位为微秒。
System.out.println("Creation Time: " + desStream.getCreationTime());
// 打印过期时间,单位为小时。
System.out.println("Expiration Time: " + desStream.getExpirationTime());
}
获取Stream下满足指定条件的Shard信息
以下示例用于根据开始shardID(InclusiveStartShardId)和每次返回的最大Shard数目获取指定Shard信息。
private static void describeStream(SyncClient client, String streamId, String shardId) {
DescribeStreamRequest dsRequest = new DescribeStreamRequest(streamId);
// Shard ID必须实际存在。您可以通过获取Stream下的所有Shard信息来获取所需起始Shard ID。
dsRequest.setInclusiveStartShardId(shardId);
dsRequest.setShardLimit(10);
DescribeStreamResponse dscStream = client.describeStream(dsRequest);
// 打印Shard信息。
System.out.println(dscStream.getShards());
}
获取Shard的读取迭代值(GetShardIterator)
调用GetShardIterator接口用于获取Shard的读取起始迭代值。
以下示例用于获取Shard的读取起始迭代值。
private static void getShardIterator(SyncClient client, String streamId, String shardId) {
GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(streamId, shardId);
GetShardIteratorResponse shardIterator = client.getShardIterator(getShardIteratorRequest);
System.out.println(shardIterator.getShardIterator());
}
获取Shard的更新记录(GetStreamRecord)
调用GetStreamRecord接口用于获取Shard的每条更新记录。
以下示例用于获取Shard的最初100条更新信息。
private static void getShardIterator(SyncClient client, String shardIterator) {
GetStreamRecordRequest streamRecordRequest = new GetStreamRecordRequest(shardIterator);
streamRecordRequest.setLimit(100);
GetStreamRecordResponse streamRecordResponse = client.getStreamRecord(streamRecordRequest);
List<StreamRecord> records = streamRecordResponse.getRecords();
for(int k=0;k<records.size();k++){
System.out.println("record info:" + records.get(k).toString());
}
System.out.println("next iterator:" + streamRecordResponse.getNextShardIterator());
}