/** * Can be overridden by the subclass to prepare the QueryBatcher before the job is started. * * @param queryBatcher */ protected void prepareQueryBatcher(QueryBatcher queryBatcher) { super.prepareBatcher(queryBatcher); if (consistentSnapshot) { queryBatcher.withConsistentSnapshot(); } if (urisReadyListeners != null) { for (QueryBatchListener listener : urisReadyListeners) { queryBatcher.onUrisReady(listener); } } if (queryFailureListeners != null) { for (QueryFailureListener listener : queryFailureListeners) { queryBatcher.onQueryFailure(listener); } } }
.withThreadCount(1) .withBatchSize(30) .withConsistentSnapshot() .onUrisReady( new ExportListener() .withConsistentSnapshot() .onUrisReady(new DeleteListener()) .onUrisReady(batch -> logger.info("Deleting {} docs", batch.getItems().length) )
.withThreadCount(2) .withBatchSize(99) .withConsistentSnapshot() .onUrisReady(new ExportListener() .onDocumentReady(doc -> {
QueryBatcher batcher = moveMgr.newQueryBatcher(query2) .onUrisReady(listener) .withConsistentSnapshot(); JobTicket ticket2 = moveMgr.startJob( batcher ); batcher.awaitCompletion();
QueryBatcher batcher = moveMgr.newQueryBatcher(query) .withBatchSize(1) .withConsistentSnapshot() .onUrisReady( batch -> {
@Test public void testQueryBatcher() { client.newDocumentManager().writeAs(collection + "/test1.json", meta, "[true]"); client.newDocumentManager().writeAs(collection + "/test1.xml", meta, "<xml/>"); client.newDocumentManager().writeAs(collection + "/test1.txt", meta, "text"); assertEquals(3, client.newQueryManager().search(collectionQuery, new SearchHandle()).getTotalResults()); StructuredQueryDefinition query = collectionQuery; // begin copy from "Using QueryBatcher" in src/main/java/com/marklogic/datamovement/package-info.java QueryBatcher qhb = dataMovementManager.newQueryBatcher(query) .withBatchSize(1000) .withThreadCount(20) .withConsistentSnapshot() .onUrisReady(batch -> { for ( String uri : batch.getItems() ) { if ( uri.endsWith(".txt") ) { client.newDocumentManager().delete(uri); } } }) .onQueryFailure(queryBatchException -> queryBatchException.printStackTrace()); JobTicket ticket = dataMovementManager.startJob(qhb); qhb.awaitCompletion(); dataMovementManager.stopJob(ticket); // end copy from "Using QueryBatcher" in src/main/java/com/marklogic/datamovement/package-info.java SearchHandle results = client.newQueryManager().search(collectionQuery, new SearchHandle()); assertEquals(2, results.getTotalResults()); for ( MatchDocumentSummary match : results.getMatchResults() ) { assertTrue(match.getUri().matches(".*/test1.(json|xml)")); } }
.withConsistentSnapshot(); JobTicket ticket = moveMgr.startJob(queryBatcher); queryBatcher.awaitCompletion();