public class DurableSubscriptionModel extends java.lang.Object implements PositionAwareSubscriptionModel, DelegatingSubscriptionModel, SubscriptionModelCancelSubscription
SubscriptionModel and with a SubscriptionPositionStorage to automatically persist
the subscription position after each successful call to the "action" method
(i.e. when the consumer in this method subscribe(String, Consumer) has completed successfully),
thus making the subscription durable.
Note that this implementation stores the subscription position after _every_ action. If you have a lot of events and duplication is not
that much of a deal, consider changing this behavior by supplying an instance of DurableSubscriptionModelConfig.
| Constructor and Description |
|---|
DurableSubscriptionModel(PositionAwareSubscriptionModel subscriptionModel,
SubscriptionPositionStorage storage)
Create a subscription that combines a
PositionAwareSubscriptionModel with a SubscriptionPositionStorage to automatically
store the subscription after each successful call to action (The "consumer" in subscribe(String, Consumer)). |
DurableSubscriptionModel(PositionAwareSubscriptionModel subscriptionModel,
SubscriptionPositionStorage storage,
DurableSubscriptionModelConfig config)
Create a subscription that combines a
PositionAwareSubscriptionModel with a SubscriptionPositionStorage to automatically
store the subscription when the predicate defined in DurableSubscriptionModelConfig.persistCloudEventPositionPredicate is fulfilled. |
| Modifier and Type | Method and Description |
|---|---|
void |
cancelSubscription(java.lang.String subscriptionId)
Cancel a subscription.
|
PositionAwareSubscriptionModel |
getDelegatedSubscriptionModel() |
org.occurrent.subscription.SubscriptionPosition |
globalSubscriptionPosition() |
void |
shutdown() |
Subscription |
subscribe(java.lang.String subscriptionId,
java.util.function.Consumer<io.cloudevents.CloudEvent> action) |
Subscription |
subscribe(java.lang.String subscriptionId,
org.occurrent.subscription.SubscriptionFilter filter,
java.util.function.Consumer<io.cloudevents.CloudEvent> action)
Start listening to cloud events persisted to the event store.
|
Subscription |
subscribe(java.lang.String subscriptionId,
org.occurrent.subscription.SubscriptionFilter filter,
java.util.function.Supplier<org.occurrent.subscription.StartAt> startAtSupplier,
java.util.function.Consumer<io.cloudevents.CloudEvent> action) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitsubscribe, subscribegetDelegatedSubscriptionModelRecursivelypublic DurableSubscriptionModel(PositionAwareSubscriptionModel subscriptionModel, SubscriptionPositionStorage storage)
PositionAwareSubscriptionModel with a SubscriptionPositionStorage to automatically
store the subscription after each successful call to action (The "consumer" in subscribe(String, Consumer)).subscriptionModel - The subscription that will read events from the event storestorage - The SubscriptionPositionStorage that'll be used to persist the stream positionpublic DurableSubscriptionModel(PositionAwareSubscriptionModel subscriptionModel, SubscriptionPositionStorage storage, DurableSubscriptionModelConfig config)
PositionAwareSubscriptionModel with a SubscriptionPositionStorage to automatically
store the subscription when the predicate defined in DurableSubscriptionModelConfig.persistCloudEventPositionPredicate is fulfilled.subscriptionModel - The subscription that will read events from the event storestorage - The SubscriptionPositionStorage that'll be used to persist the stream positionpublic Subscription subscribe(java.lang.String subscriptionId, org.occurrent.subscription.SubscriptionFilter filter, java.util.function.Supplier<org.occurrent.subscription.StartAt> startAtSupplier, java.util.function.Consumer<io.cloudevents.CloudEvent> action)
subscribe in interface SubscriptionModelpublic Subscription subscribe(java.lang.String subscriptionId, java.util.function.Consumer<io.cloudevents.CloudEvent> action)
subscribe in interface SubscriptionModelpublic Subscription subscribe(java.lang.String subscriptionId, org.occurrent.subscription.SubscriptionFilter filter, java.util.function.Consumer<io.cloudevents.CloudEvent> action)
subscribe in interface SubscriptionModelsubscriptionId - The id of the subscription, must be unique!filter - The filter to apply for this subscription. Only events matching the filter will cause the action to be called.action - This action will be invoked for each cloud event that is stored in the EventStore that matches the supplied filter.public void cancelSubscription(java.lang.String subscriptionId)
SubscriptionPositionStorage will also be removed.cancelSubscription in interface SubscriptionModelCancelSubscriptionsubscriptionId - The subscription id to cancel@PreDestroy public void shutdown()
shutdown in interface SubscriptionModelpublic org.occurrent.subscription.SubscriptionPosition globalSubscriptionPosition()
globalSubscriptionPosition in interface PositionAwareSubscriptionModelpublic PositionAwareSubscriptionModel getDelegatedSubscriptionModel()
getDelegatedSubscriptionModel in interface DelegatingSubscriptionModelCopyright © 2021. All rights reserved.