Class Balance<T>

All Implemented Interfaces:
Graph<UniformFanOutShape<T,T>,NotUsed>

public final class Balance<T> extends GraphStage<UniformFanOutShape<T,T>>
Fan-out the stream to several streams. Each upstream element is emitted to the first available downstream consumer. It will not shut down until the subscriptions for at least two downstream subscribers have been established.

A Balance has one in port and 2 or more out ports.

'''Emits when''' any of the outputs stops backpressuring; emits the element to the first available output

'''Backpressures when''' all of the outputs backpressure

'''Completes when''' upstream completes

'''Cancels when''' If eagerCancel is enabled: when any downstream cancels; otherwise: when all downstreams cancel

  • Constructor Details

    • Balance

      public Balance(int outputPorts, boolean waitForAllDownstreams, boolean eagerCancel)
  • Method Details

    • apply

      public static <T> Balance<T> apply(int outputPorts, boolean waitForAllDownstreams)
      Create a new Balance with the specified number of output ports. This method sets eagerCancel to false. To specify a different value for the eagerCancel parameter, then instantiate Balance using the constructor.

      If eagerCancel is true, balance cancels upstream if any of its downstreams cancel, if false, when all have cancelled.

      Parameters:
      outputPorts - number of output ports
      waitForAllDownstreams - if you use waitForAllDownstreams = true it will not start emitting elements to downstream outputs until all of them have requested at least one element, default value is false
    • apply$default$2

      public static <T> boolean apply$default$2()
    • outputPorts

      public int outputPorts()
    • waitForAllDownstreams

      public boolean waitForAllDownstreams()
    • eagerCancel

      public boolean eagerCancel()
    • in

      public Inlet<T> in()
    • out

      public scala.collection.immutable.IndexedSeq<Outlet<T>> out()
    • initialAttributes

      public Attributes initialAttributes()
      Overrides:
      initialAttributes in class GraphStageWithMaterializedValue<UniformFanOutShape<T,T>,NotUsed>
    • shape

      public UniformFanOutShape<T,T> shape()
      Description copied from interface: Graph
      The shape of a graph is all that is externally visible: its inlets and outlets.
    • createLogic

      public GraphStageLogic createLogic(Attributes inheritedAttributes)
      Specified by:
      createLogic in class GraphStage<UniformFanOutShape<T,T>>
    • toString

      public String toString()
      Overrides:
      toString in class Object