Class DurableSubscriptionModel
java.lang.Object
org.occurrent.subscription.blocking.durable.DurableSubscriptionModel
- All Implemented Interfaces:
DelegatingSubscriptionModel,PositionAwareSubscriptionModel,Subscribable,SubscriptionModel,SubscriptionModelLifeCycle
public class DurableSubscriptionModel
extends Object
implements PositionAwareSubscriptionModel, DelegatingSubscriptionModel
Combines a
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 Subscribable.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 Summary
ConstructorsConstructorDescriptionDurableSubscriptionModel(PositionAwareSubscriptionModel subscriptionModel, SubscriptionPositionStorage storage) Create a subscription that combines aPositionAwareSubscriptionModelwith aSubscriptionPositionStorageto automatically store the subscription after each successful call toaction(The "consumer" inSubscribable.subscribe(String, Consumer)).DurableSubscriptionModel(PositionAwareSubscriptionModel subscriptionModel, SubscriptionPositionStorage storage, DurableSubscriptionModelConfig config) Create a subscription that combines aPositionAwareSubscriptionModelwith aSubscriptionPositionStorageto automatically store the subscription when the predicate defined inDurableSubscriptionModelConfig.persistCloudEventPositionPredicateis fulfilled. -
Method Summary
Modifier and TypeMethodDescriptionvoidcancelSubscription(String subscriptionId) Cancel a subscription.org.occurrent.subscription.SubscriptionPositionbooleanbooleanbooleanvoidpauseSubscription(String subscriptionId) resumeSubscription(String subscriptionId) voidshutdown()voidstart()voidstop()subscribe(String subscriptionId, org.occurrent.subscription.SubscriptionFilter filter, org.occurrent.subscription.StartAt startAt, Consumer<io.cloudevents.CloudEvent> action) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.occurrent.subscription.api.blocking.DelegatingSubscriptionModel
getDelegatedSubscriptionModelRecursivelyMethods inherited from interface org.occurrent.subscription.api.blocking.Subscribable
subscribe, subscribe, subscribe
-
Constructor Details
-
DurableSubscriptionModel
public DurableSubscriptionModel(PositionAwareSubscriptionModel subscriptionModel, SubscriptionPositionStorage storage) Create a subscription that combines aPositionAwareSubscriptionModelwith aSubscriptionPositionStorageto automatically store the subscription after each successful call toaction(The "consumer" inSubscribable.subscribe(String, Consumer)).- Parameters:
subscriptionModel- The subscription that will read events from the event storestorage- TheSubscriptionPositionStoragethat'll be used to persist the stream position
-
DurableSubscriptionModel
public DurableSubscriptionModel(PositionAwareSubscriptionModel subscriptionModel, SubscriptionPositionStorage storage, DurableSubscriptionModelConfig config) Create a subscription that combines aPositionAwareSubscriptionModelwith aSubscriptionPositionStorageto automatically store the subscription when the predicate defined inDurableSubscriptionModelConfig.persistCloudEventPositionPredicateis fulfilled.- Parameters:
subscriptionModel- The subscription that will read events from the event storestorage- TheSubscriptionPositionStoragethat'll be used to persist the stream position
-
-
Method Details
-
subscribe
public Subscription subscribe(String subscriptionId, org.occurrent.subscription.SubscriptionFilter filter, org.occurrent.subscription.StartAt startAt, Consumer<io.cloudevents.CloudEvent> action) - Specified by:
subscribein interfaceSubscribable
-
stop
public void stop()- Specified by:
stopin interfaceSubscriptionModelLifeCycle
-
start
public void start()- Specified by:
startin interfaceSubscriptionModelLifeCycle
-
isRunning
public boolean isRunning()- Specified by:
isRunningin interfaceSubscriptionModelLifeCycle
-
isRunning
- Specified by:
isRunningin interfaceSubscriptionModelLifeCycle
-
isPaused
- Specified by:
isPausedin interfaceSubscriptionModelLifeCycle
-
resumeSubscription
- Specified by:
resumeSubscriptionin interfaceSubscriptionModelLifeCycle
-
pauseSubscription
- Specified by:
pauseSubscriptionin interfaceSubscriptionModelLifeCycle
-
cancelSubscription
Cancel a subscription. This means that it'll no longer receive events as they are persisted to the event store. The subscription position that is persisted in theSubscriptionPositionStoragewill also be removed.- Specified by:
cancelSubscriptionin interfaceSubscriptionModelLifeCycle- Parameters:
subscriptionId- The subscription id to cancel
-
shutdown
@PreDestroy public void shutdown()- Specified by:
shutdownin interfaceSubscriptionModelLifeCycle
-
globalSubscriptionPosition
public org.occurrent.subscription.SubscriptionPosition globalSubscriptionPosition()- Specified by:
globalSubscriptionPositionin interfacePositionAwareSubscriptionModel
-
getDelegatedSubscriptionModel
- Specified by:
getDelegatedSubscriptionModelin interfaceDelegatingSubscriptionModel
-