v3.5.0
Version 3.5.0 is a reactive and a multiplatform
version of fmodel
libraries optimized for Event sourcing, CQRS, and Domain Modeling.
- https://search.maven.org/artifact/com.fraktalio.fmodel/domain/3.5.0/jar
- https://search.maven.org/artifact/com.fraktalio.fmodel/application-vanilla/3.5.0/jar
- https://search.maven.org/artifact/com.fraktalio.fmodel/application-arrow/3.5.0/jar
Maven coordinates
<dependency>
<groupId>com.fraktalio.fmodel</groupId>
<artifactId>domain</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>com.fraktalio.fmodel</groupId>
<artifactId>application-vanilla</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>com.fraktalio.fmodel</groupId>
<artifactId>application-arrow</artifactId>
<version>3.5.0</version>
</dependency>
- Reference guide
- Learn by example on the playground
- Read the blog
- Check the demos
In this release, we have upgraded the Kotlin Arrow library to 1.2.0. It is a breaking change for the application-arrow
module/extension.
We have introduced and configured a binary compatibility validator into our build process.
The tool allows dumping binary API of a JVM part of a Kotlin library that is public in the sense of Kotlin visibilities and ensures that the public binary API wasn't changed in a way that makes this change binary incompatible.
We extended the case of using actor
functions to parallelize the message handling processes. (available on JVM target only)
/**
* Extension function - Handles the flow of command messages of type [C] by concurrently distributing the load across finite number of actors/handlers
*
* @param commands [Flow] of Command messages of type [C]
* @param numberOfActors total number of actors/workers available for distributing the load. Minimum one.
* @param actorsCapacity capacity of the actors channel's buffer
* @param actorsStart actors coroutine start option
* @param actorsContext additional to [CoroutineScope.coroutineContext] context of the actor coroutines.
* @param partitionKey a function that calculates the partition key/routing key of command - commands with the same partition key will be handled with the same 'actor' to keep the ordering
* @return [Flow] of stored Events of type [E]
*
*/
fun <C, S, E> EventSourcingAggregate<C, S, E>.handleConcurrently(
commands: Flow<C>,
numberOfActors: Int = 100,
actorsCapacity: Int = Channel.BUFFERED,
actorsStart: CoroutineStart = CoroutineStart.LAZY,
actorsContext: CoroutineContext = EmptyCoroutineContext,
partitionKey: (C) -> Int
): Flow<E>
Deprecating factory functions in favor of constructor-like functions.
What's Changed
- Update actions/checkout action to v3.5.0 by @renovate in #181
- Update actions/setup-java action to v3.11.0 by @renovate in #182
- Arrow KT upgraded to 1.2.0 - a step closer to 2.0.0 by @idugalic in #184
- Kotlin upgraded to 1.8.20 by @idugalic in #185
- Update dependency gradle to v8.1 by @renovate in #187
- Update actions/checkout action to v3.5.1 by @renovate in #186
- Update gradle/gradle-build-action action to v2.4.1 by @renovate in #188
- Update actions/checkout action to v3.5.2 by @renovate in #189
- Update gradle/gradle-build-action action to v2.4.2 by @renovate in #190
- Update dependency gradle to v8.1.1 by @renovate in #193
- Update kotest to v5.6.1 by @renovate in #192
- Update dependency org.jetbrains.kotlin.multiplatform to v1.8.21 by @renovate in #194
- Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.7.0 by @renovate in #195
- Deprecating factory functions in favour of constructor-like functions. by @idugalic in #196
- Update kotest to v5.6.2 by @renovate in #198
- Update dependency io.kotest.multiplatform to v5.6.2 by @renovate in #197
- Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.7.1 by @renovate in #199
- Properly propagating
ExperimentalCoroutinesApi
by @idugalic in #200 - Promote ``@FlowPreview` API to stable/experimental by @idugalic in #201
- Update dependency org.jetbrains.dokka to v1.8.20 by @renovate in #203
- Update dependency org.jetbrains.kotlin.multiplatform to v1.8.22 by @renovate in #204
- Update actions/checkout action to v3.5.3 by @renovate in #205
- Update gradle/gradle-build-action action to v2.5.1 by @renovate in #206
- Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.7.2 by @renovate in #207
- Update dependency gradle to v8.2 by @renovate in #208
- Update dependency org.jetbrains.kotlin.multiplatform to v1.9.0 by @renovate in #209
- handling the messages concurrently and in parallel - actors by @idugalic in #210
- Update dependency gradle to v8.2.1 by @renovate in #211
- Update dependency io.arrow-kt:arrow-core to v1.2.0 by @renovate in #213
- Binary compatibility validator configured by @idugalic in #214
Full Changelog: v3.4.0...v3.5.0