Я использую RocksDB Java JNI и хотел бы получать новые записи по мере их добавления в RocksDB.
Thread t = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
try {
System.out.println("Putting " + i);
rocksDB.put(("key " + i).getBytes(), ("value " + i).getBytes());
Thread.sleep(100);
} catch (InterruptedException | RocksDBException e) {
e.printStackTrace();
}
}
}, "Putting thread");
t.start();
Thread.sleep(1000); // wait for sometime
ReadOptions readOptions = new ReadOptions();
readOptions.setTailing(true);
try (RocksIterator rocksIterator = rocksDB.newIterator(readOptions)) {
for (rocksIterator.seekToFirst(); rocksIterator.isValid(); rocksIterator.next()) {
System.out.println(new String(rocksIterator.key()) + " = " + new String(rocksIterator.value()));
}
}
t.join();
Здесь, я полагаю, он создает моментальный снимок в этот момент времени (т. е. после 1 sec
), и печатаются только те элементы, которые добавлены. Я ожидал, что хвостовой итератор должен блокироваться, потому что будут добавлены новые записи.
Есть ли пример использования хвостового итератора в RocksDB?