I’m glad to announce that we’ve released Axon Framework v4.6.0 on the 15th of September, 2022.
This release contains:
Features
- Added Slack release announcement #2348
- [#2307] Carry the context during reset to the
ReplayToken
#2312 - Propagate ResetContext in ReplayToken #2307
- [#2198] Add support for Jakarta #2301
- Native Tracing for Axon Framework with OpenTelemetry as default #2294
- [#2021] Dead Letter Queue for Event Processing Groups #2258
- JPA dead letter queue implementation #2239
- Construct means to switch between classes using
javax
andjakarta
#2198 - Create add-dependabot-pr-to-project.yml #2183
- Create add-issues-to-project.yml #2182
- Multiteant support #2156
- Spring event for indication that Axon has started #2146
- Application events when handlers are registered #2144
- [#1125] Introduce
SagaLifecycle.associationValues()
#2141 - [#1964] Include
AxonServerHealthIndicator
#2130 -
AggregateTestFixture
improvement - Validate Exception Details #2125 -
AggregateTestFixture
improvement - Validate Exception Details #2110 - Feature/1466 Additional deadline validation methods #2071
- Multi-tenant support #2045
- Dead-Letter Queue for Event Processors #2021
- Added AxonServerEEContainer and AxonServerSEContainer as an easier way for people to write tests #2020
- Streaming query #2001
- [#1967] Fetch available segements only from the TokenStore #1997
- [#1645] Introduce ObjectNode-to/from-JsonNode
ContentTypeConverter
for theJacksonSerializer
#1995 - [#1490] Simplify LockFactory configuration for Aggregates #1992
- [#1986 Introduce
EventProcessingConfigurer#defaultTransactionManager
method #1989 - Register default Transaction Manager through Event Processing Configurer #1986
- Add method returning the available segments of a TokenStore #1967
- Add an actuator health indicator to check the connection between the application and Axon Server #1964
- Added the MetaDataSequencingPolicy #1930
- Provide a SequencingPolicy based on a MetaData field #1929
- Added an option to create a fixture for a state stored aggregate #1772
- JsonNode-to-ObjectNode ContentTypeConverter #1645
- Simplify LockFactory configuration per aggregate #1490
- Additional Deadline Validation methods. #1466
- Allow TrackingEventProcessor start to be deferred #1184
- Accessing Saga Association Values #1125
- Signal when all Handlers have been registered in Spring environment #880
Enhancements
- Improve deadline span name. #2360
- Make Given-phase Error Handling configurable for Saga Test Fixtures #2356
- Improve SpanFactory autoconfiguration mechanism. #2354
- Introduce LoggingSpanFactory and MultiSpanFactory #2353
- Check if a certain handler contains certain methods before registering it. #2346
- Catch exceptions from correlation data providers. #2345
- Throw exception on ambiguous dependencies #2344
- Integration Test for Command and Query Priority Calculations #2342
- Include message identifier in error message if de-serialization fails #2330
- Add CorrelationDataProvider error handling on rollback #2328
- Strip test prefix once required in JUnit 3 from test method names #2321
- Apache Maven Wrapper 3.8.6 #2320
- Allow ReplayToken creation to be customizable when resetting a projection #2308
- Ensure all dispatchable messages are serialiable by Jackson and Xstream. #2295
- Testclasses for javax jakarta extension #2280
- Remove redundant method definition #2270
- Integration Test for Command and Query Priority Calculations #2266
- Update the
PrioritizedRunnable
to aPriorityTask
#2265 - Automatically add Release Notes on milestone closure to Discuss post #2264
- Create a protected method to fetch tracking events on JpaEventStorageEngine #2262
- Create a protected method to fetch tracking events on JpaEventStorageEngine. #2259
- Allow subtype definition on the
Repository
builders for Polymorphic Aggregates #2250 - Add test for ConsistentHash.equals #2244
- Use getHost instead of getContainerIpAddress #2222
- Default snapshotfilter with revision null #2213
- Default snapshot filter with revision null #2212
- Creation policy factory for Aggregates #2209
- Removed deprecated code by updating the default serializer initialization #2206
- Flux response type rank matching #2197
- Introduce conditional variants for
ApplyMore
#2174 - Conditional variant for the ApplyMore methods #2173
- Take into account the result of the
equals
method before attempting… #2171 - Improve javadoc of the ReplayStatus enum to reflect changes to the StreamingEventProcessors #2170
- MultipleInstancesResponseType should match (lower) on single item #2148
- Add duplicate resolution on query handler registration, defaulting to… #2140
- Add method on DefaultCommandGateway to be able to customize callbacks #2139
- Default Revision
SnapshotFilter
in absence of annotation #2136 - Fine tune the
MessageHandlerLookup
for Spring Native support #2106 - Redesign of Spring Boot Auto Configuration support #2105
- Feature/1629 saga test fixture #2101
- [#2093] Validate if target Command Handling Member can resolve target #2095
- Allow several Aggregate Member collections of the same type #2093
- Changed logging about “processor falling behind” #2073
- Make asDomainEventMessage available to subclasses #2066
- Make
JpaEventStorageEngine#asDomainEventMessage(EventMessage<?>)
protected #2065 - Separate Integration Tests and Aggregate coverage reports #2063
- [#1646] Update “No Handler For” exceptional cases #2062
- [#1711] Simplify attachment of Lifecycle Operations #2061
- Change how Sonar is invoked for GHA’s #2033
- Introduce LifecycleAware interface for managing component lifecycle #2028
- Remove MonoWrapper usage. #2008
- Replaced
method.getParametersTypes().length
bymethod.getParameterCount())
#1987 - Methods for testing deadlines when time passed are consistent in TestExecutor & SagaTestFixture (fixes #1974) #1975
- Make methods for testing Deadlines consistent for
TestExecutor
andSagaTestFixture
#1974 - Added jdk17-ea on our build workflow for early feedback #1915
- Add configurable options for checking failure transiency #1910
- Prevent stack trace generation for HandlerExecutionException #1905
- Allow creation of HandlerExecutionExceptions without stacktrace #1901
- [#1898] Empty associationProperty leads to IndexOutOfBoundsException #1899
- Empty associationProperty leads to IndexOutOfBoundsException #1898
- Provide means of configuring a
CommandCallback
#1889 - Splitted builds into pr and not pr, added ghactions to dependabot and other minors #1830
- Fine tune triggered Deadline validation for Test Fixtures #1797
- Simplified DeadlineManager configuration #1796
- Expand RetryScheduler to support more granular decision when to retry #1723
- Simplify attachment of Lifecycle Operations #1711
- Improved termination heuristic when response is < batchsize/2 and the… #1691
- Exception in startHandlers is “swallowed” by exception in shutdownHandlers #1669
- Fine tune “No Handler For…” Exception #1646
- SagaTestFixture should support expectSuccessfulHandlerExecution() #1629
- Large number of rolled back transactions on JPA/JDBC TokenStore #1475
- Reduce Reflection usage #1427
- Add annotation NonNull/Nullable for better usage in kotlin (also java) #1280
- Spurious warnings when a tracking token gap appears then is filled #1193
- Query handlers of the same name and response type within one class #719
- MultipleInstancesResponseType should recognize handler with single result #602
Bug Fixes
- Rename SpanFactory.registerTagProvider to registerSpanAttributeProvider #2347
- [#2341] Adjust type checking in
SimpleQueryUpdateEmitter
to accompany type erasure #2343 - UpdateEmitter drops MultipleInstancesResponseType updates due to type checking. #2341
- Parameter resolver ordering is wrong for test fixtures #2340
- Take all types into account when resolving the deadline handler #2336
- When moving to a polymorphic Aggregate the stored Deadlines are not handled. #2333
- [#2331] Fix deserialization bug
GrpcBackedSubscriptionQueryMessage
and filter non-handler-matching updates #2332 -
GrpcBackedSubscriptionQueryMessage
overwrites update type with initial response type #2331 - [#2317] Using deadlines with DefaultConfigurer leads to NPE #2319
- Using deadlines with DefaultConfigurer leads to NPE #2317
- Fix streaming queries not respecting PriorityTask mechanism #2309
- [#2268] Adjust
ConditionalOnClass
to validate existence of theAxonServerConnectionManager
in absence of theaxon-server-connector
package. #2269 - Bug when using Spring actuator starter and excluding axon server #2268
- Support
Cache
andLockFactory
configuration on@Aggregate
stereotype #2254 - Extracted lambdas to inner static classes #2240
- Dependency on reactor is needed to be able to start an Axon app using current 4.6.0-SNAPSHOT #2238
- Fix snapshots not being deployed to nexus #2237
- fix javadoc: default port is 8124, not 8123 #2223
- fix typo in local variable name #2218
- Publisher Response Type #2215
- EventProcessingModule should lazily initialize processors #2180
- Fix
StreamingEventProcessor#maxCapacity
for theTrackingEventProcessor
#2124 - Restore missing commit 6e531a6cf173243adf9519905f42cbec0a334238 #2116
- Wire eventSerializer into QuartzEventSchedulerFactoryBean #2115
- Wire the event
Serializer
intoQuartzEventSchedulerFactoryBean
#2088 - Fix typo in pom.xml #2022
- Fix typos #2016
- Exponential Retry for Tracking event processor not happening for transient exceptions when using postgres JdbcTokenStore #1920
Contributors
We’d like to thank all the contributors who worked on this release!
- @mnegacz
- @WackyS
- @YvonneCeelie
- @altuntasfatih
- @saratry
- @barbeque-squared
- @srmppn
- @krosenvold
- @gklijs
- @erikhofer
- @Dilsh0d
- @smcvb
- @sandjelkovic
- @MGathier
- @dgomezg
- @Arnaud-J
- @sascha-eisenmann
- @Morlack
- @andye2004
- @nils-christian
- @lfgcampos
- @heutelbeck
- @mikelhamer
- @m1l4n54v1c
- @Vermorkentech
- @lacinoire
- @jangalinski
- @azzazzel
- @eddumelendez
- @timtebeek
- @sgrimm-sg
- @dmurat
- @abuijze
- @hatzlj
- @schananas