有沒有方法可以說明碎片的狀態,無論是OPEN,CLOSED還是EXPIRED?我能夠確定這些信息的唯一方法似乎是試圖在碎片上進行操作。如何判斷Kinesis碎片的狀態?
回答
您可以使用亞馬遜Web服務的Java SDK:https://github.com/aws/aws-sdk-java
有很多的訪問你的資源有用的方法。
編輯:對不起,我誤解了這個問題。您無法直接訪問分片狀態(尚)。但有一個技巧:一個封閉的碎片總是有一個「結束序列號」定義。你可以用這種方法破解。
摘自Javadoc;
公共字符串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();
}
}
}
-
您使用的編程語言對不起,這是流狀態不是分片狀態。 – thyme 2014-10-14 14:59:45
哦,對不起,我錯過了那部分。據我所知,你不能直接訪問碎片的狀態(還)。但是有一個技巧:一個封閉的碎片總是有一個定義的「EndingSequenceNumber」。你可以用這種方法破解。 http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesis/model/SequenceNumberRange.html#getEndingSequenceNumber() – az3 2014-10-15 14:48:20
- 1. 如何判斷用戶的狀態?
- 2. iOS:我如何判斷UISearchBar的狀態?
- 3. 管理碎片狀態
- 4. 保存碎片狀態
- 5. 許多生產商的Kinesis碎片
- 6. Kinesis流/碎片 - 多個消費者
- 7. 保存碎片狀態的方法
- 8. Kinesis如何在工人中分配碎片?
- 9. 如何判斷的/ proc/[PID] /狀態已無需打開文件
- 10. 保留碎片狀態以及活動
- 11. 分離後保存碎片UI狀態
- 12. mongos狀態不顯示任何碎片和碎片加入也越來越沒
- 13. 如何判斷db2有多少連接處於活動狀態?
- 14. Python Rubiks Cube如何判斷2個狀態是否相等
- 15. 如何在恢復w/o savedInstanceState後恢復碎片狀態?
- 16. 如何只加載一次碎片並保存其狀態?
- 17. Android - 碎片內的片段 - 保留狀態
- 18. kinesis流式讀取器的狀態
- 19. 如何意圖從碎片到碎片?
- 20. Amazon Kinesis - 獲取每個碎片中的記錄數
- 21. 如何動態顯示Android碎片
- 22. 如何用碎片動態創建ViewPager?
- 23. 如何檢查Kinesis客戶端的連接狀態?
- 24. 如何在多個記錄處理器之間平衡kinesis碎片?
- 25. 如何在碎片
- 26. 如何在碎片
- 27. 如何在碎片
- 28. 如何在碎片
- 29. 如何判斷jQuery的TMPL
- 30. 如何判斷哪個版本的寶石目前處於活動狀態?
? – az3 2014-10-14 13:41:53
並不重要。我想知道是否有方法通過他們的API獲取這些信息。 – thyme 2014-10-14 14:59:20