getLastCommittedGenerationId()およびsetLastReadGenerationId()メソッドを使用して、クライアントが最後に読み取ったGenerationIdを保存します。
レコード・ストアでクライアント読取り状態を維持するには:
ServiceAddress address = new ServiceAddress(host, port, contextPath); RecordStoreLocator locator = RecordStoreLocator.create(address, instanceName); RecordStore recordStore = locator.getService(); // Run a baseline read TransactionId transactionId = recordStore.startTransaction(TransactionType.READ); GenerationId gid = recordStore.getLastCommittedGenerationId(transactionId); ReadCursorId readCursorId = recordStore.startBaselineRead(transactionId, gid); List<Record> records; do { records = recordStore.readRecords(readCursorId, numRecordsPerFetch); // do something with the records } while (!records.isEmpty()); recordStore.endRead(readCursorId); recordStore.setLastReadGenerationId(transactionId, clientId, gid); recordStore.commitTransaction(transactionId); ... // Run a delta read at a later point TransactionId transactionId = recordStore.startTransaction(TransactionType.READ); GenerationId startGenerationId = recordStore.getLastReadGenerationId(transactionId, clientId); GenerationId endGenerationId = recordStore.getLastCommittedGenerationId(transactionId); ReadCursorId readCursorId = recordStore.startDeltaRead(transactionId, startGenerationId, endGenerationId); List<Record> records; do { records = recordStore.readRecords(readCursorId, numRecordsPerFetch); // do something with the records } while (!records.isEmpty()); recordStore.endRead(readCursorId); recordStore.setLastReadGenerationId(transactionId, clientId, endGenerationId); recordStore.commitTransaction(transactionId);