Cyclops 10.3.0 : reactive-streams circuit breaking error handling
Cyclops 10.3.0
What’s new Cyclops 10.3.0
- reactive-streams enhancements!
- Circuit breaking onError and recoverWith Operators
** Available on ReactiveSeq (reactive-streams push : ReactiveStreamX and iterative pull StreamX)
** Available on IO (use With ReactiveSeq, Flux or Flowable!) - Eval operators completion : streamWhile, streamUntil use reactive-streams instances when Eval is async
- Non-backpressure based async Streams have been deprecated - the ReactiveSeq API is designed for controlled flows whether push based and asynchronous or pull based and synchronous
- Bug fixes : reactive-streams async initialisation error, zip stackoverlow, FutureStream error progagation
Bug fixes
- FutureStream does not propagate errors
- Initialization error in asynchronous reactive-streams
- Reactive zip3, zip4 result in Stackoverflow error
Recursive error handling
IO.of(1, 2, 3)
.mapChecked(this::loadFromDb)
.recoverWith(this::loadFromNextSource)
.stream()
.vector()
If loadFromDB fails, we will fall back to loadFromNextSource, if that fails we will fallback again to loadFromNextSource which gets the opportunity to choose a different source.
Changelog
Check out the features delivered and bugs fixed -
Dependency changes
Agrona to 0.9.33
Reactor to 3.2.6.RELEASE
RxJava2 to 2.2.7
Jackson to 2.9.8
Modules
- cyclops - Persistent data structures and control types
- cyclops-futurestream - Parrallel asynchronous streaming
- cyclops-reactive-collections - Fast, non-blocking, asynchronous extensions for JDK and Persistent Collections
- cyclops-anyM - Higher kinded abstractions for working with any Java Monad type.
- cyclops-pure - Higher kinded type classes for pure functional programming in Java
- cyclops-reactor-integration - Reactive collections and AnyM integrations with Reactor.
- cyclops-rxjava2-integration - Reactive collections and AnyM integrations with Rx Java 2.
- cyclops-jackson-integration - Jackson databindings for Cyclops persistent data structures and control types.
Get cyclops X
Gradle
Cyclops
compile 'com.oath.cyclops:cyclops:10.3.0’
Cyclops AnyM
compile 'com.oath.cyclops:cyclops-anym:10.3.0’
Cyclops Futurestream
compile 'com.oath.cyclops:cyclops-futurestream:10.3.0’
Cyclops Pure
compile 'com.oath.cyclops:cyclops-pure:10.3.0’
Cyclops Reactive Collections
compile 'com.oath.cyclops:cyclops-reactive-collections:10.3.0’
Cyclops Reactor Integration
compile 'com.oath.cyclops:cyclops-reactor-integration:10.3.0'
Cyclops RxJava2 Integration
compile 'com.oath.cyclops:cyclops-rx2-integration:10.3.0'
Cyclops Jackson Integration
compile 'com.oath.cyclops:cyclops-jackson-integration:10.3.0'
Maven
Cyclops
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops</artifactId>
<version>10.3.0</version>
</dependency>
Cyclops AnyM
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-anym</artifactId>
<version>10.3.0</version>
</dependency>
Cyclops Futurestream
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-anym</artifactId>
<version>10.3.0</version>
</dependency>
Cyclops Pure
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-pure</artifactId>
<version>10.3.0</version>
</dependency>
Cyclops Reactive Collections
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-reactive-collections</artifactId>
<version>10.3.0</version>
</dependency>
Cyclops Reactor Integration
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-reactor-integration</artifactId>
<version>10.3.0</version>
</dependency>
Cyclops RxJava2 Integration
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-rx2-integration</artifactId>
<version>10.3.0</version>
</dependency>
Cyclops Jackson Integration
<dependency>
<groupId>com.oath.cyclops</groupId>
<artifactId>cyclops-jackson-integration</artifactId>
<version>10.3.0</version>
</dependency>
License
cyclops-react is licensed under the Apache 2.0 license.