IOQueue provides a high-performance, in-memory, user-friendly queue implementation with composable back-pressure and purely-functional semantics built on ZIO.
IOQueue provides a high-performance, purely-functional, type-safe queue built on ZIO with composable, transparent back-pressure. A queue allows to adding (enqueue) and removing (dequeue) elements in First In First Out (FIFO) manner.
IOQueue is an asynchronous queue, which works without locks or blocking, and exposes its functionality in two simple methods: offer, to add an item to the queue; and take, to remove an item from the queue.
- Purely-functional interface that cleanly integrates with ZIO and Scalaz.
- Fully asynchronous implementation, without locks or blocking.
- Multithreaded and optimized for concurrent usage from many fibers.
- Composable back-pressure to ensure producers cannot flood consumers.
FS2 | Monix Queue | Java Blocking Queue | |
---|---|---|---|
Purely-functional | ✓ | 𐄂 | 𐄂 |
Composable Backpressure | ✓ | 𐄂 | 𐄂 |
Asynchronous | ✓ | ✓ | 𐄂 |
High-performance | ✓ | 𐄂 | ✓ |
Scalaz Integration | 𐄂 | 𐄂 | 𐄂 |