本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
列出流
如上一节中所述,流的应用范围限定在Amazon与 “关联的帐户”Amazon用于实例化 Kinesis Data Streams 客户端以及为该客户端指定的区域的凭据。网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon账户可以同时具有多个活动流。您可在 Kinesis Data Streams 控制台中列出流,也可以编程方式列出流。此部分中的代码演示如何列出您的所有流。Amazonaccount.
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 创建直播 中所示)。