Skip to content

zio/zio-flow

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.

ZIO Flow

ZIO Flow is an engine for executing persistent, distributed, fault-tolerant applications, providing an easy and powerful way to build stateful serverless applications.

Development CI Badge Sonatype Releases Sonatype Snapshots javadoc ZIO Flow

ZIO Flow helps you orchestrate complex business logic, without having to worry about fallible systems, transient failures, manual rollbacks, or other infrastructure.

  • Type-safe, compositional front-end
  • Resilient interactions with databases, web services, and microservices
  • Persistent workflows that survive restarts
  • Transactional guarantees via a persistent saga pattern

Getting started

For defining ZIO Flow programs, you need to add the following dependency to your build.sbt file:

libraryDependencies += "dev.zio" %% "zio-flow" % "1.0.0-RC2"

This module is available for Scala.js as well.

To learn more about defining ZIO Flow programs, see Defining flows.

There are a couple of activity libraries providing integration with 3rd party services. These libraries are available as separate modules, and they only have to be present on the definition side of your flows. The executor does not need to have these libraries on the classpath.

libraryDependencies += "dev.zio" %% "zio-flow-twilio" % "1.0.0-RC2"
libraryDependencies += "dev.zio" %% "zio-flow-sendgrid" % "1.0.0-RC2"

There are many ways to execute ZIO Flow programs. The easiest way is to use a compiled version of the built-in ZIO Flow Server:

sbt zioFlowServer/run

We will provide ready to use Docker images as well in the future.

To embed the ZIO Flow executor in your own application, you need to add the following dependency:

libraryDependencies += "dev.zio" %% "zio-flow-runtime" % "1.0.0-RC2"

For more information about the executors, see Execution. You will also need to choose a persistent backend implementation:

libraryDependencies += "dev.zio" %% "zio-flow-rocksdb" % "1.0.0-RC2"
libraryDependencies += "dev.zio" %% "zio-flow-dynamodb" % "1.0.0-RC2"
libraryDependencies += "dev.zio" %% "zio-flow-cassandra" % "1.0.0-RC2"

Documentation

Learn more on the ZIO Flow homepage!

Contributing

For the general guidelines, see ZIO contributor's guide.

Code of Conduct

See the Code of Conduct

Support

Come chat with us on Badge-Discord.

License

License