Interface MongoChangeStreamCursor<TResult>

Type Parameters:
TResult - The type of documents the cursor contains
All Superinterfaces:
AutoCloseable, Closeable, Iterator<TResult>, MongoCursor<TResult>

@NotThreadSafe public interface MongoChangeStreamCursor<TResult> extends MongoCursor<TResult>
The Mongo Cursor interface for change streams implementing the iterator protocol.

An application should ensure that a cursor is closed in all circumstances, e.g. using a try-with-resources statement:


 try (MongoChangeStreamCursor<ChangeStreamDocument<Document>> cursor = collection.watch().cursor()) {
     while (cursor.hasNext()) {
         System.out.println(cursor.next());
     }
 }
 

A MongoOperationTimeoutException does not invalidate the MongoChangeStreamCursor, but is immediately propagated to the caller. Subsequent method call will attempt to resume operation by establishing a new change stream on the server, without doing getMore request first.

If a MongoOperationTimeoutException occurs before any events are received, it indicates that the server has timed out before it could finish processing the existing oplog. In such cases, it is recommended to close the current stream and recreate it with a higher timeout setting.

Since:
3.11
  • Method Details

    • getResumeToken

      @Nullable BsonDocument getResumeToken()
      Returns the resume token. If a batch has been iterated to the last change stream document in the batch and a postBatchResumeToken is included in the document, the postBatchResumeToken will be returned. Otherwise, the resume token contained in the last change stream document will be returned.
      Returns:
      the resume token, which can be null if the cursor has either not been iterated yet, or the cursor is closed.