列出流 - Amazon Kinesis Data Streams
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

列出流

如上一节中所述,流的应用范围限定在与用于实例化 Kinesis Data Streams 客户端的 Amazon 凭证关联的 Amazon 账户以及为该客户端指定的区域。一个 Amazon 账户可以同时具有多个活动流。您可在 Kinesis Data Streams 控制台中列出流,也可以编程方式列出流。本节中的代码演示如何列出您的 Amazon 账户的所有流。

ListStreamsRequest listStreamsRequest = new ListStreamsRequest(); listStreamsRequest.setLimit(20); ListStreamsResult listStreamsResult = client.listStreams(listStreamsRequest); List<String> streamNames = listStreamsResult.getStreamNames();

此代码示例首先创建 ListStreamsRequest 的一个新实例,然后调用其 setLimit 方法来指定对 listStreams 的每次调用应返回最多 20 个流。如果您没有为 setLimit 指定值,则 Kinesis Data Streams 将返回的流数量小于或等于账户中的流数量。此代码之后将 listStreamsRequest 传递到客户端的 listStreams 方法。返回值 listStreams 存储在 ListStreamsResult 对象中。此代码对此对象调用 getStreamNames 方法,并将返回的流名称存储在 streamNames 列表中。请注意,Kinesis Data Streams 返回的流数量可能少于指定限制值所指定的数量,即使账户和区域中的流数量多于此数量也是如此。要确保检索所有流,请使用下一代码示例中描述的 getHasMoreStreams 方法。

while (listStreamsResult.getHasMoreStreams()) { if (streamNames.size() > 0) { listStreamsRequest.setExclusiveStartStreamName(streamNames.get(streamNames.size() - 1)); } listStreamsResult = client.listStreams(listStreamsRequest); streamNames.addAll(listStreamsResult.getStreamNames()); }

此代码对 getHasMoreStreams 调用 listStreamsRequest 方法,以检查是否有超出在对 listStreams 的初始调用中返回的流数量的可用流。如果有,则此代码将使用在对 setExclusiveStartStreamName 的上一调用中返回的最后一个流的名称调用 listStreams 方法。setExclusiveStartStreamName 方法将导致对 listStreams 的下一调用在该流之后开始。该调用返回的一组流名称之后将添加到 streamNames 列表。此过程将继续,直到所有流名称已收集到列表中。

listStreams 返回的流可能处于下列状态之一:

  • CREATING

  • ACTIVE

  • UPDATING

  • DELETING

您可使用 describeStream 方法查看流的状态(如上一节 通过 API 创建流 中所示)。