reactor-core/src/main/java/reactor/core/publisher/Mono.java
public final Disposable subscribe(
			@Nullable Consumer<? super T> consumer,
			@Nullable Consumer<? super Throwable> errorConsumer,
			@Nullable Runnable completeConsumer,
			@Nullable Consumer<? super Subscription> subscriptionConsumer) {
		return subscribeWith(new LambdaMonoSubscriber<>(consumer, errorConsumer,
				completeConsumer, subscriptionConsumer));
	}
public final Disposable subscribe(
			@Nullable Consumer<? super T> consumer,
			@Nullable Consumer<? super Throwable> errorConsumer,
			@Nullable Runnable completeConsumer,
			@Nullable Consumer<? super Subscription> subscriptionConsumer) {
		return subscribeWith(new LambdaMonoSubscriber<>(consumer, errorConsumer,
				completeConsumer, subscriptionConsumer));
	}
public final Disposable subscribe ( @ Nullable Consumer < ? super T > consumer , @ Nullable Consumer < ? super Throwable > errorConsumer , @ Nullable Runnable completeConsumer , @ Nullable Consumer < ? super Subscription > subscriptionConsumer ) { return subscribeWith ( new LambdaMonoSubscriber <> ( consumer , errorConsumer , completeConsumer , subscriptionConsumer ) ) ; }
Subscribe {@link Consumer} to this {@link Mono} that will respectively consume all the
elements in the sequence, handle errors, react to completion, and request upon subscription.
It will let the provided {@link Subscription subscriptionConsumer}
request the adequate amount of data, or request unbounded demand
{@code Long.MAX_VALUE} if no such consumer is provided.
<p>
For a passive version that observe and forward incoming data see {@link #doOnSuccess(Consumer)} and
{@link #doOnError(java.util.function.Consumer)}.
<p>
Keep in mind that since the sequence can be asynchronous, this will immediately
return control to the calling thread. This can give the impression the consumer is
not invoked when executing in a main thread or a unit test for instance.

<p>
<img class="marble" src="doc-files/marbles/subscribeForMono.svg" alt="">

@param consumer the consumer to invoke on each value
@param errorConsumer the consumer to invoke on error signal
@param completeConsumer the consumer to invoke on complete signal
@param subscriptionConsumer the consumer to invoke on subscribe signal, to be used
for the initial {@link Subscription#request(long) request}, or null for max request

@return a new {@link Disposable} that can be used to cancel the underlying {@link Subscription}
Subscribe { @link Consumer } to this { @link Mono } that will respectively consume all the elements in the sequence handle errors react to completion and request upon subscription . It will let the provided { @link Subscription subscriptionConsumer } request the adequate amount of data or request unbounded demand { @code Long . MAX_VALUE } if no such consumer is provided . <p > For a passive version that observe and forward incoming data see { @link #doOnSuccess ( Consumer ) } and { @link #doOnError ( java . util . function . Consumer ) } . <p > Keep in mind that since the sequence can be asynchronous this will immediately return control to the calling thread . This can give the impression the consumer is not invoked when executing in a main thread or a unit test for instance .