[英]How do I tell the status of a Kinesis shard?
有沒有辦法告訴碎片的狀態是什么,無論是開放,關閉還是過期? 我能夠確定此信息的唯一方法似乎是嘗試在分片上進行操作。
您可以使用Amazon Web Services Java SDK: https : //github.com/aws/aws-sdk-java
有很多有用的方法來訪問您的資源。
編輯:對不起,我誤解了這個問題。 您無法直接訪問分片的狀態(尚未)。 但有一個技巧:一個封閉的分片總是定義一個“結束序列號”。 你可以這樣破解。
摘自Javadoc;
public String getEndingSequenceNumber ()
范圍的結束序列號。 處於OPEN狀態的碎片的結束序列號為null。
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.kinesis.AmazonKinesis;
import com.amazonaws.services.kinesis.AmazonKinesisClient;
import com.amazonaws.services.kinesis.model.DescribeStreamRequest;
import com.amazonaws.services.kinesis.model.DescribeStreamResult;
import com.amazonaws.services.kinesis.model.ListStreamsResult;
public class KinesisSandbox {
public static void main(String[] args) {
try {
String amazonKey = "x";
String amazonSecret = "y";
AmazonKinesis client = new AmazonKinesisClient(new BasicAWSCredentials(amazonKey, amazonSecret));
ListStreamsResult listStreamsResult = client.listStreams();
System.out.println("\nlistStreamsResult: " + listStreamsResult);
String streamName = listStreamsResult.getStreamNames().get(0);
DescribeStreamRequest describeStreamRequest = new DescribeStreamRequest();
describeStreamRequest.setStreamName(streamName);
DescribeStreamResult describeStreamResult = client.describeStream(describeStreamRequest);
System.out.println("\n describeStreamResult.getStreamDescription().getStreamStatus(): "
+ describeStreamResult.getStreamDescription().getStreamStatus());
// System.out.println("\ndescribeStreamResult: " + describeStreamResult);
List<Shard> shards = describeStreamResult.getStreamDescription().getShards();
for (int i = 0; i < shards.size(); i++) {
Shard shard = shards.get(i);
if (shard.getSequenceNumberRange().getEndingSequenceNumber() == null) {
System.out.println("shard(" + i + "): " + shard.getShardId() + " is OPEN.");
} else {
System.out.println("shard(" + i + "): " + shard.getShardId() + " is CLOSED.");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.