public class ChangeStreamRequest<T> extends Object implements SubscriptionRequest<com.mongodb.client.model.changestream.ChangeStreamDocument<org.bson.Document>,T,ChangeStreamRequest.ChangeStreamRequestOptions>
SubscriptionRequest
implementation to be used for listening to
Change Streams via a MessageListenerContainer
using the synchronous MongoDB Java driver.
The most trivial use case is subscribing to all events of a specific collection
ChangeStreamRequest request = new ChangeStreamRequest<>(System.out::println, () -> "collection-name");
or MongoDatabase
which receives events from all collections
in that database.
ChangeStreamRequest request = new ChangeStreamRequest<>(System.out::println, RequestOptions.justDatabase("test"));
For more advanced scenarios ChangeStreamOptions
offers abstractions for options like filtering, resuming,...
ChangeStreamOptions options = ChangeStreamOptions.builder()
.filter(newAggregation(match(where("age").is(7))))
.returnFullDocumentOnUpdate()
.build();
ChangeStreamRequest request = new ChangeStreamRequest<>(System.out::println, new ChangeStreamRequestOptions("collection-name", options));
ChangeStreamRequest.ChangeStreamRequestBuilder
offers a fluent API for creating ChangeStreamRequest
with
ChangeStreamOptions
in one go.
ChangeStreamRequest request = ChangeStreamRequest.builder()
.collection("collection-name")
.publishTo(System.out::println)
.filter(newAggregation(match(where("age").is(7))))
.fullDocumentLookup(UPDATE_LOOKUP)
.build();
Messges
passed to the MessageListener
contain the ChangeStreamDocument
within their
raw value
while the fullDocument
is extracted into the messages body
. Unless otherwise specified (via ChangeStreamOptions.getFullDocumentLookup()
the
message body
for update events
will be empty for a Document
target type.
Message.getBody()
Message bodies} that map to a different target type automatically enforce an
FullDocument.UPDATE_LOOKUP
.Modifier and Type | Class and Description |
---|---|
static class |
ChangeStreamRequest.ChangeStreamRequestBuilder<T>
Builder for creating
ChangeStreamRequest . |
static class |
ChangeStreamRequest.ChangeStreamRequestOptions
SubscriptionRequest.RequestOptions implementation specific to a ChangeStreamRequest . |
SubscriptionRequest.RequestOptions
Constructor and Description |
---|
ChangeStreamRequest(MessageListener<com.mongodb.client.model.changestream.ChangeStreamDocument<org.bson.Document>,? super T> messageListener,
SubscriptionRequest.RequestOptions options)
|
Modifier and Type | Method and Description |
---|---|
static ChangeStreamRequest.ChangeStreamRequestBuilder |
builder()
Obtain a shiny new
ChangeStreamRequest.ChangeStreamRequestBuilder and start defining your ChangeStreamRequest in this
fancy fluent way. |
static <T> ChangeStreamRequest.ChangeStreamRequestBuilder<T> |
builder(MessageListener<com.mongodb.client.model.changestream.ChangeStreamDocument<org.bson.Document>,? super T> listener)
Obtain a shiny new
ChangeStreamRequest.ChangeStreamRequestBuilder and start defining your ChangeStreamRequest in this
fancy fluent way. |
MessageListener<com.mongodb.client.model.changestream.ChangeStreamDocument<org.bson.Document>,? super T> |
getMessageListener()
Obtain the
MessageListener to publish messages to. |
ChangeStreamRequest.ChangeStreamRequestOptions |
getRequestOptions()
Get the
SubscriptionRequest.RequestOptions specifying the requests behaviour. |
public ChangeStreamRequest(MessageListener<com.mongodb.client.model.changestream.ChangeStreamDocument<org.bson.Document>,? super T> messageListener, SubscriptionRequest.RequestOptions options)
messageListener
- must not be null.options
- must not be null.public MessageListener<com.mongodb.client.model.changestream.ChangeStreamDocument<org.bson.Document>,? super T> getMessageListener()
SubscriptionRequest
MessageListener
to publish messages
to.getMessageListener
in interface SubscriptionRequest<com.mongodb.client.model.changestream.ChangeStreamDocument<org.bson.Document>,T,ChangeStreamRequest.ChangeStreamRequestOptions>
public ChangeStreamRequest.ChangeStreamRequestOptions getRequestOptions()
SubscriptionRequest
SubscriptionRequest.RequestOptions
specifying the requests behaviour.getRequestOptions
in interface SubscriptionRequest<com.mongodb.client.model.changestream.ChangeStreamDocument<org.bson.Document>,T,ChangeStreamRequest.ChangeStreamRequestOptions>
public static ChangeStreamRequest.ChangeStreamRequestBuilder builder()
ChangeStreamRequest.ChangeStreamRequestBuilder
and start defining your ChangeStreamRequest
in this
fancy fluent way. Just don't forget to call build()
when your're done.ChangeStreamRequest
.public static <T> ChangeStreamRequest.ChangeStreamRequestBuilder<T> builder(MessageListener<com.mongodb.client.model.changestream.ChangeStreamDocument<org.bson.Document>,? super T> listener)
ChangeStreamRequest.ChangeStreamRequestBuilder
and start defining your ChangeStreamRequest
in this
fancy fluent way. Just don't forget to call build()
when your're done.ChangeStreamRequest
.Copyright © 2011–2021 Pivotal Software, Inc.. All rights reserved.