object Consumer extends Serializable
- Alphabetic
- By Inheritance
- Consumer
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- trait Sync[-In, +R] extends Consumer[In, R]
Defines a synchronous Consumer that builds synchronous subscribers.
Value Members
- def cancel[A]: Sync[A, Unit]
A consumer that immediately cancels its upstream after subscription.
- implicit def catsContravariant[C]: Contravariant[[α$0$]Consumer[α$0$, C]]
cats.Contravariantinstance for Consumer. - implicit val catsProfunctor: Profunctor[Consumer]
cats.arrow.Profunctorinstance for Consumer. - def complete[A]: Sync[A, Unit]
A simple consumer that consumes all elements of the stream and then signals its completion.
- def create[In, Out](f: (Scheduler, Cancelable, Callback[Throwable, Out]) => Observer[In]): Consumer[In, Out]
Creates a Consumer out of the given function.
Creates a Consumer out of the given function.
The function returns an Observer and takes as input:
- a Scheduler for any asynchronous execution needs the returned observer might have
- a Cancelable that can be used for
concurrently canceling the stream (in addition to being able to
return
StopfromonNext) - a Callback that must be called to signal the final result, after the observer finished processing the stream, or an error if the processing finished in error
- f
is the input function with an injected
Scheduler,Cancelable,Callbackand that returns anObserver
- def firstNotification[A]: Sync[A, Notification[A]]
A consumer that will produce a Notification of the first value received (
onNext,onCompleteoronError), after which the streaming gets cancelled.A consumer that will produce a Notification of the first value received (
onNext,onCompleteoronError), after which the streaming gets cancelled.- OnNext will be signaled on the first
onNextevent if it happens and the streaming will be stopped byStop. - OnComplete will be signaled if the stream
was empty and thus completed without any
onNext. - OnError will be signaled if the stream
was completed in error before the first
onNexthappened.
- OnNext will be signaled on the first
- def foldLeft[S, A](initial: => S)(f: (S, A) => S): Sync[A, S]
Given a fold function and an initial state value, applies the fold function to every element of the stream and finally signaling the accumulated value.
Given a fold function and an initial state value, applies the fold function to every element of the stream and finally signaling the accumulated value.
- initial
is a lazy value that will be fed at first in the fold function as the initial state.
- f
is the function that calculates a new state on each emitted value by the stream, for accumulating state
- def foldLeftEval[F[_], S, A](initial: => S)(f: (S, A) => F[S])(implicit F: TaskLike[F]): Consumer[A, S]
Given a fold function and an initial state value, applies the fold function to every element of the stream and finally signaling the accumulated value.
Given a fold function and an initial state value, applies the fold function to every element of the stream and finally signaling the accumulated value.
The given fold function returns an
F[A]value, whereFis any data type that implementscats.effect.Effect(e.g.Task,Coeval), thus able to do asynchronous processing, with ordering of calls being guaranteed.- initial
is a lazy value that will be fed at first in the fold function as the initial state.
- f
is the function that calculates a new state on each emitted value by the stream, for accumulating state, returning a
F[A]capable of lazy or asynchronous execution.
- def foldLeftTask[S, A](initial: => S)(f: (S, A) => Task[S]): Consumer[A, S]
Given a fold function and an initial state value, applies the fold function to every element of the stream and finally signaling the accumulated value.
Given a fold function and an initial state value, applies the fold function to every element of the stream and finally signaling the accumulated value.
The given fold function returns a
Taskthat can execute an asynchronous operation, with ordering of calls being guaranteed.- initial
is a lazy value that will be fed at first in the fold function as the initial state.
- f
is the function that calculates a new state on each emitted value by the stream, for accumulating state, returning a
Taskcapable of asynchronous execution.
- def foreach[A](cb: (A) => Unit): Sync[A, Unit]
Builds a consumer that will consume the stream, applying the given function to each element and then finally signaling its completion.
Builds a consumer that will consume the stream, applying the given function to each element and then finally signaling its completion.
- cb
is the function that will be called for each element
- def foreachEval[F[_], A](cb: (A) => F[Unit])(implicit F: TaskLike[F]): Consumer[A, Unit]
Builds a consumer that will consume the stream, applying the given function to each element and then finally signaling its completion.
Builds a consumer that will consume the stream, applying the given function to each element and then finally signaling its completion.
The given callback function returns a
F[A]value that can execute an asynchronous operation, with ordering of calls being guaranteed, given that theF[_]data type is any type that implementscats.effect.Effect(e.g.Task,IO).- cb
is the function that will be called for each element
- def foreachParallel[A](parallelism: Int)(cb: (A) => Unit): Consumer[A, Unit]
Builds a consumer that will consume the stream, applying the given function to each element, in parallel, then finally signaling its completion.
Builds a consumer that will consume the stream, applying the given function to each element, in parallel, then finally signaling its completion.
- parallelism
is the maximum number of (logical) threads to use
- cb
is the function that will be called for each element
- def foreachParallelTask[A](parallelism: Int)(cb: (A) => Task[Unit]): Consumer[A, Unit]
Builds a consumer that will consume the stream, applying the given function to each element, in parallel, then finally signaling its completion.
Builds a consumer that will consume the stream, applying the given function to each element, in parallel, then finally signaling its completion.
The given callback function returns a
Taskthat can execute an asynchronous operation, with ordering of calls being guaranteed per subscriber.- parallelism
is the maximum number of (logical) threads to use
- cb
is the function that will be called for each element
- def foreachTask[A](cb: (A) => Task[Unit]): Consumer[A, Unit]
Builds a consumer that will consume the stream, applying the given function to each element and then finally signaling its completion.
Builds a consumer that will consume the stream, applying the given function to each element and then finally signaling its completion.
The given callback function returns a
Taskthat can execute an asynchronous operation, with ordering of calls being guaranteed.- cb
is the function that will be called for each element
- def fromObserver[In](f: (Scheduler) => Observer[In]): Consumer[In, Unit]
Given a function taking a
Schedulerand returning an Observer, builds a consumer from it.Given a function taking a
Schedulerand returning an Observer, builds a consumer from it.You can use the
Scheduleras the execution context, for working withFuture, for forcing asynchronous boundaries or for executing tasks with a delay. - def head[A]: Sync[A, A]
A consumer that will produce the first streamed value on
onNextafter which the streaming gets cancelled.A consumer that will produce the first streamed value on
onNextafter which the streaming gets cancelled.In case the stream is empty and so no
onNexthappen beforeonComplete, then the aNoSuchElementExceptionwill get triggered. - def headOption[A]: Sync[A, Option[A]]
A consumer that will produce the first streamed value on
onNextafter which the streaming gets cancelled.A consumer that will produce the first streamed value on
onNextafter which the streaming gets cancelled.In case the stream is empty and so no
onNexthappen beforeonComplete, then the aNoSuchElementExceptionwill get triggered. - def loadBalance[A, R](consumers: Consumer[A, R]*): Consumer[A, List[R]]
Creates a consumer that, when consuming the stream, will start multiple subscribers corresponding and distribute the load between them.
Creates a consumer that, when consuming the stream, will start multiple subscribers corresponding and distribute the load between them.
Once each subscriber emits a final result, this consumer will return a list of aggregated results.
Has the following rules:
- items are pushed on free subscribers, respecting their contract, each item being pushed to the first available subscriber in the queue
- in case no free subscribers are available, then the source gets back-pressured until free subscribers are available
- in case of
onCompleteoronError, all subscribers that are still active will receive the event - the
onSuccesscallback of individual subscribers is aggregated in a list buffer and once the aggregate contains results from all subscribers, the load-balancing consumer will emit the aggregate - the
onErrorcallback triggered by individual subscribers will signal that error upstream and cancel the streaming for every other subscriber - in case any of the subscribers cancels its subscription
(either returning
StopinonNextor canceling its assigned cancelable), it gets excluded from the pool of active subscribers, but the other active subscribers will still receive notifications - if all subscribers canceled (either by returning
Stopor by canceling their assignable cancelable reference), then streaming stops as well
In other words the
Task, created by applying this consumer to an observable, will complete once all the subscribers emit a result or as soon as an error happens.- consumers
is a list of consumers that will initialize the subscribers that will process events in parallel, with the parallelism factor being equal to the number of consumers specified in this list.
- returns
a list of aggregated results that were computed by all of the subscribers as their result
- def loadBalance[A, R](parallelism: Int, consumer: Consumer[A, R]): Consumer[A, List[R]]
Creates a consumer that, when consuming the stream, will start multiple subscribers corresponding and distribute the load between them.
Creates a consumer that, when consuming the stream, will start multiple subscribers corresponding and distribute the load between them.
Once each subscriber emits a final result, this consumer will return a list of aggregated results.
Has the following rules:
- items are pushed on free subscribers, respecting their contract, each item being pushed to the first available subscriber in the queue
- in case no free subscribers are available, then the source gets back-pressured until free subscribers are available
- in case of
onCompleteoronError, all subscribers that are still active will receive the event - the
onSuccesscallback of individual subscribers is aggregated in a list buffer and once the aggregate contains results from all subscribers, the load-balancing consumer will emit the aggregate - the
onErrorcallback triggered by individual subscribers will signal that error upstream and cancel the streaming for every other subscriber - in case any of the subscribers cancels its subscription
(either returning
StopinonNextor canceling its assigned cancelable), it gets excluded from the pool of active subscribers, but the other active subscribers will still receive notifications - if all subscribers canceled (either by returning
Stopor by canceling their assignable cancelable reference), then streaming stops as well
In other words the
Task, created by applying this consumer to an observable, will complete once all the subscribers emit a result or as soon as an error happens.- parallelism
is the number of subscribers that will get initialized to process incoming events in parallel.
- consumer
is the subscriber factory that will initialize all needed subscribers, in number equal to the specified parallelism and thus that will be fed in parallel
- returns
a list of aggregated results that were computed by all of the subscribers as their result
- def raiseError[In, R](ex: Throwable): Sync[In, R]
A consumer that triggers an error and immediately cancels its upstream after subscription.
- def toList[A]: Consumer[A, List[A]]
A consumer that will return a collection of all the streamed values as a Scala
List.A consumer that will return a collection of all the streamed values as a Scala
List.Note that this method is functionally the same as the Observable.toListL
WARNING: For infinite streams the process will eventually blow up with an out of memory error.

This is the API documentation for the Monix library.
Package Overview
monix.execution exposes lower level primitives for dealing with asynchronous execution:
Atomictypes, as alternative tojava.util.concurrent.atomicmonix.catnap exposes pure abstractions built on top of the Cats-Effect type classes:
monix.eval is for dealing with evaluation of results, thus exposing Task and Coeval.
monix.reactive exposes the
Observablepattern:Observableimplementationsmonix.tail exposes Iterant for purely functional pull based streaming:
BatchandBatchCursor, the alternatives to Scala'sIterableandIteratorrespectively that we are using within Iterant's encodingYou can control evaluation with type you choose - be it Task, Coeval, cats.effect.IO or your own as long as you provide correct cats-effect or cats typeclass instance.