Tablestore menyediakan operasi ListStream untuk menanyakan semua aliran dari sebuah tabel, operasi DescribeStream untuk menanyakan informasi tentang sebuah aliran, operasi GetShardIterator untuk mendapatkan iterator awal dalam sebuah aliran guna membaca sebuah shard, serta operasi GetStreamRecord untuk mendapatkan catatan pembaruan dari sebuah shard dalam sebuah aliran.
ListStream
Anda dapat memanggil operasi ListStream untuk menanyakan semua aliran dari sebuah tabel dalam sebuah instance.
Kode sampel berikut menunjukkan cara menanyakan semua aliran dari sebuah tabel:
private static void listStream(SyncClient client, String tableName) {
ListStreamRequest listStreamRequest = new ListStreamRequest(tableName);
ListStreamResponse result = client.listStream(listStreamRequest);
System.out.println(result.getStreams());
}DescribeStream
Anda dapat memanggil operasi DescribeStream untuk menanyakan informasi tentang sebuah aliran, seperti waktu pembuatan aliran, periode validitas aliran, status aliran, daftar shard, dan ID shard berikutnya yang akan dikembalikan.
Anda dapat menanyakan informasi tentang semua shard dari sebuah aliran atau informasi tentang shard tertentu yang memenuhi kondisi tertentu.
Tanyakan informasi tentang semua shard dari sebuah aliran
Kode sampel berikut menunjukkan cara menanyakan informasi tentang semua shard dari sebuah aliran:
private static void describeStream(SyncClient client, String streamId) {
DescribeStreamRequest desRequest = new DescribeStreamRequest(streamId);
DescribeStreamResponse desStream = client.describeStream(desRequest);
// Tampilkan informasi tentang shard.
System.out.println("Informasi Shard: " + desStream.getShards());
// Tampilkan waktu ketika shard dibuat dalam mikrodetik.
System.out.println("Waktu Pembuatan: " + desStream.getCreationTime());
// Tampilkan periode validitas shard dalam jam.
System.out.println("Waktu Kedaluwarsa: " + desStream.getExpirationTime());
}Tanyakan informasi tentang shard dari sebuah aliran yang memenuhi kondisi tertentu
Kode sampel berikut menunjukkan cara menanyakan informasi tentang shard tertentu berdasarkan ID shard awal (InclusiveStartShardId) dan jumlah maksimum shard yang dapat dikembalikan untuk setiap permintaan:
private static void describeStream(SyncClient client, String streamId, String shardId) {
DescribeStreamRequest dsRequest = new DescribeStreamRequest(streamId);
// Tentukan ID shard awal. Anda bisa mendapatkan ID shard awal dengan menanyakan informasi tentang semua shard dari sebuah aliran.
dsRequest.setInclusiveStartShardId(shardId);
dsRequest.setShardLimit(10);
DescribeStreamResponse dscStream = client.describeStream(dsRequest);
// Tampilkan informasi tentang shard tertentu.
System.out.println(dscStream.getShards());
} GetShardIterator
Anda dapat memanggil operasi GetShardIterator untuk mendapatkan iterator awal dalam sebuah aliran guna membaca sebuah shard.
Kode sampel berikut menunjukkan cara mendapatkan iterator awal dalam sebuah aliran untuk membaca sebuah shard:
private static void getShardIterator(SyncClient client, String streamId, String shardId) {
GetShardIteratorRequest getShardIteratorRequest = new GetShardIteratorRequest(streamId, shardId);
GetShardIteratorResponse shardIterator = client.getShardIterator(getShardIteratorRequest);
System.out.println(shardIterator.getShardIterator());
}GetStreamRecord
Anda dapat memanggil operasi GetStreamRecord untuk mendapatkan catatan pembaruan dari sebuah shard.
Kode sampel berikut menunjukkan cara mendapatkan 100 catatan pembaruan pertama dari sebuah shard:
private static void getShardIterator(SyncClient client, String shardIterator) {
GetStreamRecordRequest streamRecordRequest = new GetStreamRecordRequest(shardIterator);
streamRecordRequest.setLimit(100);
GetStreamRecordResponse streamRecordResponse = client.getStreamRecord(streamRecordRequest);
List<StreamRecord> records = streamRecordResponse.getRecords();
for(int k=0;k<records.size();k++){
System.out.println("informasi catatan:" + records.get(k).toString());
}
System.out.println("iterator berikutnya:" + streamRecordResponse.getNextShardIterator());
}