Asynchronous, Reactive Programming for Scala and Scala.js.
Monix

适用于 Scala 和 Scala.js 的异步响应式编程库。
概述
Monix 是一个高性能的 Scala / Scala.js 库,用于组合异步、基于事件的程序。
它最初是 ReactiveX 的一个完善实现,融入了更强的函数式编程思想,并从底层设计支持背压,旨在与 Scala 标准库无缝交互,且开箱即兼容 Reactive Streams 协议。随后,它扩展到包含用于暂停副作用和资源处理的抽象,并且是 Cats Effect 的发起者和实现者之一。
作为一个 Typelevel 项目,Monix 自豪地展示了 Scala 中纯粹、类型安全的函数式编程,同时保持务实,并在性能上毫不妥协。
主要特点:
- 提供功能强大的 Observable、Iterant、Task、IO[E, A] 和 Coeval 数据类型,以及它们所需的所有支持
- 模块化,拆分为多个子项目,仅使用您需要的部分
- 专为真正的异步性设计,可在 JVM 和 Scala.js 上运行
- 作为主要项目策略,提供出色的测试覆盖率、代码质量和 API 文档
用法
- 使用 monix-jvm-app-template.g8 可快速上手基于 Monix 的应用程序
- 查看 monix-sample 可获取一个在服务器端和客户端均使用 Monix 的项目示例。
库依赖(sbt)
兼容性基准:
- JDK 最低
17(已验证21) - Scala
2.13.18和 Scala3.8.3
稳定版本(与 Cats 及 Cats-Effect 2.x 兼容):
libraryDependencies += "io.monix" %% "monix" % "x.y.z"
子项目
Monix 3.x 在设计上采用模块化架构。详见 子模块关系图:
您可以按需选择:
monix-execution提供底层执行环境,更准确地说,包含Scheduler、Cancelable、Atomic、Local、CancelableFuture以及来自monix-catnap的基于Future的抽象。monix-catnap提供构建在 Cats-Effect 类型类之上的纯抽象;依赖于monix-execution、Cats 1.x 和 Cats-Effect。monix-eval提供Task、Coeval;依赖于monix-execution。monix-reactive提供Observable,用于建模具有背压的响应式、基于推送的流;依赖于monix-eval。monix-tail提供Iterant流,用于纯函数式的基于拉取的流处理;依赖于monix-eval并大量使用 Cats-Effect。monix包含上述所有模块。
文档
请参阅:
API 文档:
(欢迎贡献)
相关链接:
贡献
Monix 项目欢迎任何有意参与的人贡献。您提供的所有代码或文档必须采用 Apache License 2.0 许可,详见 LICENSE.txt。
在 GitHub、Gitter 频道或其他场合讨论 Monix 时,您必须遵守 Scala 行为准则。
如果您发现 bug、有功能想法或对代码有疑问,欢迎提交 issue。我们也非常乐意接受拉取请求。有关更多信息,请查看 贡献者指南。
如果您想通过捐赠支持项目的持续维护:
采用者
以下是部分在生产环境中使用 Monix 的公司(非详尽列表)。未找到您的公司? 提交 PR 吧 ❤️
- PITS Global Data Recovery Services
- Abacus
- Agoda
- AVSystem
- commercetools
- Coya
- DigitalGenius
- E.ON Connecting Energies
- eBay Inc.
- Eloquentix
- Hypefactors
- Iterators
- Netflix
- Sony Electronics
- Tinkoff
- Zalando
- Zendesk
许可证
本仓库中的所有代码均采用 Apache License 2.0 版本授权。详情参见 LICENSE。
Introduction
异步、响应式编程,适用于Scala及Scala.js。【此简介由AI生成】
