Class MultiOnSubscribe<T>

java.lang.Object
io.smallrye.mutiny.groups.MultiOnSubscribe<T>
Type Parameters:
T - the type of item

public class MultiOnSubscribe<T> extends Object
Group to configure the action to execute when the observed Multi sends a Flow.Subscription. The downstream don't have a subscription yet. It will be passed once the configured action completes.

For example:

 
 multi.onSubscription().invoke(sub -> System.out.println("subscribed"));
 // Delay the subscription by 1 second (or until an asynchronous action completes)
 multi.onSubscription().call(sub -> Uni.createFrom(1).onItem().delayIt().by(Duration.ofSecond(1)));
 
 
  • Constructor Details

    • MultiOnSubscribe

      public MultiOnSubscribe(Multi<T> upstream)
  • Method Details

    • invoke

      @CheckReturnValue public Multi<T> invoke(Consumer<? super Flow.Subscription> callback)
      Produces a new Multi invoking the given callback when the subscription is received.

      The callback in invoked before passing a subscription event downstream. If the callback throws an exception, the downstream receives a subscription and the failure immediately.

      Parameters:
      callback - the callback, must not be null.
      Returns:
      the new Multi
    • invoke

      @CheckReturnValue public Multi<T> invoke(Runnable callback)
      Produces a new Multi invoking the given callback when the subscription is received.

      The callback in invoked before passing a subscription event downstream. If the callback throws an exception, the downstream receives a subscription and the failure immediately.

      Parameters:
      callback - the callback, must not be null.
      Returns:
      the new Multi
    • call

      @CheckReturnValue public Multi<T> call(Function<? super Flow.Subscription,Uni<?>> action)
      Produces a new Multi invoking the given @{code action} when the subscription event is received.

      Unlike invoke(Consumer), the passed function returns a Uni. When the produced Uni sends the subscription, the function is called. The subscription event is passed downstream only when the Uni completes. If the produced Uni fails or if the function throws an exception, the failure is propagated downstream.

      Parameters:
      action - the callback, must not be null
      Returns:
      the new Multi
    • call

      @CheckReturnValue public Multi<T> call(Supplier<Uni<?>> action)
      Produces a new Multi invoking the given @{code action} when the subscription event is received.

      Unlike invoke(Consumer), the passed function returns a Uni. When the produced Uni sends the subscription, the supplier is called. The subscription event is passed downstream only when the Uni completes. If the produced Uni fails or if the function throws an exception, the failure is propagated downstream.

      Parameters:
      action - the callback, must not be null
      Returns:
      the new Multi