{"id":15013773,"url":"https://github.com/smallrye/smallrye-mutiny","last_synced_at":"2025-04-23T20:54:37.085Z","repository":{"id":35822503,"uuid":"198222234","full_name":"smallrye/smallrye-mutiny","owner":"smallrye","description":"An Intuitive Event-Driven Reactive Programming Library for Java","archived":false,"fork":false,"pushed_at":"2025-04-23T12:11:16.000Z","size":23723,"stargazers_count":842,"open_issues_count":15,"forks_count":133,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-04-23T20:54:03.729Z","etag":null,"topics":["asynchronous","java","jvm","programming","quarkus","reactive","reactive-extensions","reactive-streams","streams","vertx"],"latest_commit_sha":null,"homepage":"https://smallrye.io/smallrye-mutiny","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smallrye.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-07-22T12:48:27.000Z","updated_at":"2025-04-23T12:11:19.000Z","dependencies_parsed_at":"2023-10-24T13:40:17.559Z","dependency_job_id":"fa89671a-6936-41e1-942e-033761ceb980","html_url":"https://github.com/smallrye/smallrye-mutiny","commit_stats":{"total_commits":1988,"total_committers":58,"mean_commits":"34.275862068965516","dds":0.6810865191146882,"last_synced_commit":"cd6deae614e3b6c824e18e13b835987f2ac3f01a"},"previous_names":[],"tags_count":88,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallrye%2Fsmallrye-mutiny","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallrye%2Fsmallrye-mutiny/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallrye%2Fsmallrye-mutiny/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallrye%2Fsmallrye-mutiny/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smallrye","download_url":"https://codeload.github.com/smallrye/smallrye-mutiny/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250514767,"owners_count":21443208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asynchronous","java","jvm","programming","quarkus","reactive","reactive-extensions","reactive-streams","streams","vertx"],"created_at":"2024-09-24T19:44:45.872Z","updated_at":"2025-04-23T20:54:37.077Z","avatar_url":"https://github.com/smallrye.png","language":"Java","readme":"![Build Status](https://github.com/smallrye/smallrye-mutiny/actions/workflows/build-main.yml/badge.svg) \n![Build status (1.x branch)](https://github.com/smallrye/smallrye-mutiny/actions/workflows/build-1.x.yml/badge.svg) \n![License](https://img.shields.io/github/license/smallrye/smallrye-mutiny.svg) \n![Maven Central](https://img.shields.io/maven-central/v/io.smallrye.reactive/mutiny?color=green) \n![Javadoc](https://javadoc.io/badge2/io.smallrye.reactive/mutiny/javadoc.svg)\n\n# ⚡️ Mutiny, an Intuitive Event-Driven Reactive Programming Library for Java\n\n[Mutiny is a modern reactive programming library for Java](https://smallrye.io/smallrye-mutiny/).\n\nMutiny provides a simple but powerful asynchronous development model to build reactive applications.\n\nThis project is sponsored by [Red Hat](https://www.redhat.com/).\n\n## 🚀 Overview\n\nMutiny can be used in any Java application exhibiting asynchrony.\n\nFrom reactive microservices, data streaming, event processing to API gateways and network utilities, Mutiny is a great fit.\n\n### Event-Driven\n\nMutiny places events at the core of its design. \nWith Mutiny, you observe events, react to them, and create elegant and readable processing pipelines.\n\n**💡 A PhD in functional programming is not required.**\n\n### Navigable\n\nEven with smart code completion, classes with hundred of methods are confusing.\n\nMutiny provides a navigable and explicit API driving you towards the operator you need.\n\n### Non-Blocking I/O\n\nMutiny is the perfect companion to tame the asynchronous nature of applications with non-blocking I/O.\n\nDeclaratively compose operations, transform data, enforce progress, recover from failures and more.\n\n### Quarkus and Vert.x native\n\nMutiny is integrated in [Quarkus](https://quarkus.io) where every reactive API uses Mutiny, and [Eclipse Vert.x](https://vertx.io) clients are made available using [Mutiny bindings](https://github.com/smallrye/smallrye-mutiny-vertx-bindings).\n\nMutiny is however an independent library that can ultimately be used in any Java application.\n\n### Reactive Converters Built-In\n\nMutiny is based on the [Reactive Streams protocol](https://www.reactive-streams.org/), and so it can be integrated with any other reactive programming library.\n\nIn addition, Mutiny offers converters to interact with other popular libraries and [Kotlin](https://kotlinlang.org/).\n\n## 👓 Mutiny workshop examples\n\nYou can learn about Mutiny from the [documentation and website](https://smallrye.io/smallrye-mutiny).\n\nThis repository also contains the [Mutiny workshop examples](workshop-examples) that cover the common concerns through self-contained executable [JBang](https://www.jbang.dev/) scripts.\n\n## 📦 Build instructions\n\nMutiny is built with Apache Maven, so all you need is:\n\n```shell\n./mvnw install\n```\n\nIf you want to run a _quick_ build without running tests or generating API docs, then run:\n\n```shell\n./mvnw -Dquickly\n```\n\n| Git branch | Versions                         | Baseline                              | Compliance                 |\n|------------|----------------------------------|---------------------------------------|----------------------------|\n| `main`     | 2.x.y *(in development)*         | Java 17, `java.util.concurrent.Flow ` | Reactive Streams TCK 1.0.4 |\n| `2.5.x`    | 2.5.y *(backports, bug fixes)*   | Java 11, `java.util.concurrent.Flow ` | Reactive Streams TCK 1.0.4 |\n| `1.x`      | 1.x.y *(sunset, rare bug fixes)* | Java 8, Reactive Streams 1.0.4        | Reactive Streams TCK 1.0.4 |\n\n## ✨ Contributing\n\nSee [the contributing guidelines](CONTRIBUTING.md)\n\nMutiny is an open project, feel-free to:\n\n- [report issues](https://github.com/smallrye/smallrye-mutiny/issues), and\n- [propose enhancements via pull-requests](https://github.com/smallrye/smallrye-mutiny/pulls).\n\n## 👋 Discussions and support\n\nFor anything related to the usage of Mutiny in Quarkus, please refer to the [Quarkus support](https://quarkus.io/support/)\n\nFor more general discussions about Mutiny, you can:\n\n- [start a new discussion thread in GitHub Discussions (preferred option)](https://github.com/smallrye/smallrye-mutiny/discussions), or\n- [use the `mutiny` tag on StackOverflow](https://stackoverflow.com/questions/tagged/mutiny).\n\n## 🧪 Publications\n\nJulien Ponge, Arthur Navarro, Clément Escoffier, and Frédéric Le Mouël. 2021. **[Analysing the Performance and Costs of Reactive Programming Libraries in Java](https://doi.org/10.1145/3486605.3486788).** *In Proceedings of the 8th ACM SIGPLAN International Workshop on Reactive and Event-Based Languages and Systems (REBLS ’21)*, October 18, 2021, Chicago, IL, USA. ACM, New York, NY, USA, 10 pages. [(PDF)](https://hal.inria.fr/hal-03409277/document)\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/smallrye/smallrye-mutiny.svg?variant=adaptive)](https://starchart.cc/smallrye/smallrye-mutiny)\n","funding_links":[],"categories":["并发编程"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmallrye%2Fsmallrye-mutiny","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmallrye%2Fsmallrye-mutiny","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmallrye%2Fsmallrye-mutiny/lists"}