Amazon Kinesis Data Streams
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

从流中检索分片

describeStream 方法返回的响应对象使您能够检索有关组成流的分片的信息。要检索分片,请对此对象调用 getShards 方法。此方法可能不会通过一次调用返回流中的所有分片。在以下代码中,我们查看 getStreamDescription 上的 getHasMoreShards 方法以了解是否有未返回的其他分片。如果有,也就是说,如果此方法返回 true,则我们将继续循环调用 getShards,以将返回的新的分片批次添加到我们的分片列表中。循环将在 getHasMoreShards 返回 false 时退出;即,所有分片均已返回。请注意,getShards 不会返回处于 EXPIRED 状态的分片。有关分片状态(包括 EXPIRED 状态)的更多信息,请参阅 分片之后的数据路由、数据保留和分片状态

DescribeStreamRequest describeStreamRequest = new DescribeStreamRequest(); describeStreamRequest.setStreamName( myStreamName ); List<Shard> shards = new ArrayList<>(); String exclusiveStartShardId = null; do { describeStreamRequest.setExclusiveStartShardId( exclusiveStartShardId ); DescribeStreamResult describeStreamResult = client.describeStream( describeStreamRequest ); shards.addAll( describeStreamResult.getStreamDescription().getShards() ); if (describeStreamResult.getStreamDescription().getHasMoreShards() && shards.size() > 0) { exclusiveStartShardId = shards.get(shards.size() - 1).getShardId(); } else { exclusiveStartShardId = null; } } while ( exclusiveStartShardId != null );