Occurrent 0.19.0 is released with several improvements and bug fixes.

Backward Incompatible Changes

  • CatchupSubscriptionModel subscriptions are now started in a background thread by default. Call the “waitUntilStarted()” on the Subscription to make is synchronous.
  • When using “in-memory” subscriptions, by doing e.g. @Subscription(id="myId", startAt = BEGINNING_OF_TIME, resumeBehavior = SAME_AS_START), the subscription will be started on all nodes even when a CompetingConsumerSubscriptionModel is used.

All Changes:

  • Made OccurrentAnnotationBeanPostProcessor a static bean in OccurrentMongoAutoConfiguration to avoid Spring warning logs when booting up
  • Fixed a bug in OccurrentAnnotationBeanPostProcessor that caused @Subscription(id="myId", startAt = BEGINNING_OF_TIME) not to replay events from the beginning of time
  • CompetingConsumerSubscriptionModel supports delegating to parent subscription model if the StartAt position returns null. This means that the CompetingConsumerSubscriptionModel can be bypassed for certain subscriptions. This is useful if you have an in-memory subscription on multiple nodes with a CompetingConsumerSubscriptionModel.
  • Added an overloaded method to SubscriptionModelLifeCycle (implemented by most SubscriptionModels) start allows you to start a subscription model without automatically starting all paused subscriptions. This method is called start and takes a boolean that tells if all subscriptions should be automatically started when the subscription model starts.
  • When using “in-memory” subscriptions, by doing e.g. @Subscription(id="myId", startAt = BEGINNING_OF_TIME, resumeBehavior = SAME_AS_START), the subscription will be started on all nodes even when a CompetingConsumerSubscriptionModel is used.
  • The waitUntilStarted() method in the Subscription interface is now a default method.
  • CatchupSubscriptionModel subscriptions are now started in a background thread by default. Call the “waitUntilStarted()” on the Subscription to make is synchronous.
  • The java.util.Stream returned from SpringMongoEventStore is now automatically closed when the last element is consumed.
  • Added ability to specify whether the subscription should “waitUntilStarted” in the Subscriptions DSL.

Dependency Upgrades

  • Upgraded Spring Boot from 3.2.5 to 3.3.1
  • Upgraded Kotlin from 1.9.23 to 2.0.0
  • Upgraded Mongo sync driver from 4.11.2 to 5.1.1
  • Upgraded Jackson from 2.15.4 to 2.17.1
  • Upgraded reactor from 3.6.5 to 3.6.7
  • Upgraded jobrunr from 7.1.1 to 7.2.1
  • Upgraded amqp-client from 5.20.0 to 5.21.0
  • Upgraded spring-aspects from 6.1.1 to 6.1.10
  • Upgraded spring-retry from 2.0.3 to 2.0.6
  • Upgraded spring-hateoas from 2.2.0 to 2.3.0
  • Upgraded spring-data-mongodb from 4.3.0 to 4.3.1
  • Upgraded kotlinx-collections-immutable-jvm from 0.3.4 to 0.3.7
  • Upgraded arrow-core from 1.2.1 to 1.2.4
  • Upgraded jetbrains annotations from 22.0.0 to 24.1.0
  • Upgraded logback-classic from 1.4.14 to 1.5.6