rezilience is a ZIO-native collection of policies for making asynchronous systems more resilient to failures.
It consists of these policies:
Features / Design goals
- Type-safety: all errors that can result from any of the
reziliencepolicies are encoded in the method signatures, so no unexpected RuntimeExceptions.
- Support for your own error types (the
ZIO[R, E, A]) instead of requiring your effects to have
Exceptionas error type
rezilienceuses only ZIO fibers and will not create threads or block
- Switchable at runtime with two transition modes
- Resource-safe: built on ZIO's
ZManaged, any allocated resources are cleaned up safely after use.
- Interrupt safe: interruptions of effects wrapped by
reziliencepolicies are handled properly.
- Thread-safe: all policies are safe under concurrent use.
- ZIO integration: some policies take for example ZIO
reziliencetries to help type inference using variance annotations
- Metrics: all policies (will) provide usage metrics for monitoring purposes
- Composable: policies can be composed into one overall policy
- Discoverable: no syntax extensions or implicit conversions, just plain scala
Further questions? Look for the
#rezilience channel on the ZIO Discord: https://discord.gg/2ccFBr4
Add to your build.sbt:
libraryDependencies += "nl.vroste" %% "rezilience" % "<version>"
If you are using this library and find it useful, please consider adding your company or project to the list below!