表格存储提供了 stream 的 list 和 describe 操作,以及 shard 的 getsharditerator 和 getshardrecord 操作。

列出所有的Stream(ListStream)

ListStream接口用于列出当前实例和表下的所有stream。

示例

列出某个表的所有 stream 信息。

private static void listStream(SyncClient client, String tableName) {
	ListStreamRequest listStreamRequest = new ListStreamRequest(tableName);
	ListStreamResponse result = client.listStream(listStreamRequest);
}

查询表Stream描述信息(DescribeStream)

DescribeStream接口可以查询 stream 的创建时间(creationTime)、过期时间(expirationTime)、当前的状态(status) 、包含 shard 的列表(shards)和 下一个起始 shard 的 id(如果还有尚未返回的 shard)。

示例 1

获取当前 stream 的所有 shard 信息。

	private static void describeStream(SyncClient client, String streamId) {
		DescribeStreamRequest desRequest = new DescribeStreamRequest(streamId);
		DescribeStreamResponse desStream = client.describeStream(desRequest);
	}

示例 2

设置开始 shardID(InclusiveStartShardId)和每次返回的最大 shard 数目。

	private static void describeStream(SyncClient client, String streamId) {
	DescribeStreamRequest dsRequest = new DescribeStreamRequest(streamId);
	dsRequest.setInclusiveStartShardId(startShardId);
	dsRequest.setShardLimit(10);
	DescribeStreamResponse dscStream = client.describeStream(dsRequest);
	}

获取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);
	}

获取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());
	}