A collection of utilities, operators, and serialization helpers for RxJava 1 to simplify reactive programming tasks.
RxJava-extras is a utility library for RxJava 1 that provides additional operators, testing helpers, and serialization tools to enhance reactive programming workflows. It solves common problems like managing backpressure with disk buffering, simplifying retry logic, and handling checked exceptions more elegantly.
Java developers building reactive applications with RxJava 1 who need advanced operators, robust testing utilities, or efficient data serialization.
Developers choose RxJava-extras for its comprehensive set of production-tested utilities that fill gaps in RxJava 1, such as disk-based backpressure handling and streamlined testing, reducing boilerplate and improving application reliability.
Utilities for use with rxjava
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Transformers.onBackpressureBufferToFile allows buffering items to disk to prevent out-of-memory errors with fast producers, as detailed with performance benchmarks in the README.
TestingHelper simplifies unit testing by automating backpressure and concurrency scenarios, offering method chaining and comprehensive test variations for RxJava operators.
RetryWhen builder provides flexible retry strategies, including constant delays, exponential backoff, and exception filtering, reducing boilerplate code for error handling.
Supports both standard Java serialization and Kryo for fast object serialization to files, with utilities like Serialized.read/write for streamlined data persistence.
Limited to RxJava 1, requiring migration to rxjava2-extras for RxJava 2, which fragments usage and adds maintenance overhead for modern projects.
Utilities like onBackpressureBufferToFile show lower throughput for small messages (e.g., 15.2 MB/s for 4B messages), making them inefficient for fine-grained data streams.
Features such as onBackpressureBufferToFile have numerous options (e.g., rolloverEvery, bufferSizeBytes) that can be overwhelming and prone to misconfiguration without deep understanding.
Operators like stateMachine require intricate state management and backpressure handling, posing challenges for developers unfamiliar with advanced RxJava concepts.