列出串流 - Amazon Kinesis Data Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

列出串流

串流的範圍設定為與用於實例化 Kinesis Data Streams 用 AWS 戶端的 AWS 認證相關聯的帳戶,以及為用戶端指定的區域。 AWS 帳戶一次可以有多個作用中的串流。您可以在 Kinesis Data Streams 主控台中或是以程式設計方式列出串流。本節中的代碼顯示如何列出您 AWS 帳戶的所有流。

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 方法來查看串流的狀態,如先前的小節使用建立串流 APIs中所述。