This is the 7th release of Reactor 3.0, part of Aluminium Release Train.
It contains backports of bug fixes and API deprecations from the 3.1.0 branch,
the later allowing to lay an easier migration path ahead of time when possible.
This is a recommended update for all Reactor 3 users.
⚠️ Update considerations and deprecations
Mono.flatMapbecomesflatMapMany. In turn in 3.1.0flatMapwill change to the signature and behavior of currentMono.then(Function). This is semantically more correct as aflatMaptraditionally returns the same type as the type it is called from (here Mono, not Flux). (#516)- Note that the deprecation notes refer one each other. If you want to try out the future behavior, keep using
thenand useflatMapManyinstead offlatMap. You will have to migrate fromthentoflatMapin 3.1.0.
- Note that the deprecation notes refer one each other. If you want to try out the future behavior, keep using
- Prepare migration path for deep Processor rework:
connectandconnectSinkshould not be necessary anymore,Processorsnow have a commonsinkandserializeAPI (#525) - Flux/Mono error handling APIs have been realigned (#535):
Mono.otherwiseandFlux.onErrorResumeWithaligned ononErrorResumemapErroraligned toonErrorMapMono.otherwiseReturnaligned toonErrorReturnMono.otherwiseIfEmptyaligned toswitchIfEmptyFlux.switchOnError(x)to be replaced withonErrorResume(ignore -> x)
(notice the introduction of the lambda, but it ignores the parameter)
- Overloads of
thenand its variants that take aSupplier<Mono|Publisher>are deprecated (#547)- Instead use the simpler overloads (
Publisher/Monobased) but with aFlux.deferorMono.deferinstead of the Supplier to lazily instantiate the publisher.
- Instead use the simpler overloads (
- The
bufferandwindowvariants that take both aPublisherandFunctionto respectively define the opening and closing boundaries for the buffer/window are deprecated in favor of a newbufferWhen/windowWhenvariant (#542)
✨ New features and improvements
- Introduce
Mono.flatMapManyandMono.flatMap(#516) - Introduce Flux and Mono
onErrorMap(#535) - Introduce
Mono.onErrorReturn,Mono.switchIfEmtpy(#535) - Introduce
Flux.bufferWhen,Flux.windowWhen(#542)
🪲 Bug fixes
- Return new instance when chaining several Mono.untilOther (#515)
- Fix
Operators#setOncecancelling the wrong subscription - Fix
DeferredSubscription#isCancelled
📖 Documentation, Tests and Build
- add missing deprecated notice to
subscribe(Consumer, int) - Javadoc is now built with support for Java 8
apiNotetag and UTF8 charset