src/main/java/io/arivera/oss/embedded/rabbitmq/helpers/StartupHelper.java
@Override
  public Future<ProcessResult> call() throws StartupException {
    PatternFinderOutputStream initializationWatcher = new PatternFinderOutputStream(BROKER_STARTUP_COMPLETED);

    // Inform the initializationWatcher if the process ends before the expected output is produced.
    PublishingProcessListener rabbitMqProcessListener = new PublishingProcessListener();
    rabbitMqProcessListener.addSubscriber(initializationWatcher);

    Future<ProcessResult> resultFuture = startProcess(initializationWatcher, rabbitMqProcessListener);
    waitForConfirmation(initializationWatcher);

    return resultFuture;
  }
@Override
  public Future<ProcessResult> call() throws StartupException {
    PatternFinderOutputStream initializationWatcher = new PatternFinderOutputStream(BROKER_STARTUP_COMPLETED);

    // Inform the initializationWatcher if the process ends before the expected output is produced.
    PublishingProcessListener rabbitMqProcessListener = new PublishingProcessListener();
    rabbitMqProcessListener.addSubscriber(initializationWatcher);

    Future<ProcessResult> resultFuture = startProcess(initializationWatcher, rabbitMqProcessListener);
    waitForConfirmation(initializationWatcher);

    return resultFuture;
  }
Starts the RabbitMQ Server and blocks the current thread until the server is confirmed to have started.
<p>
This is useful to ensure no other interactions happen with the RabbitMQ Server until it's safe to do so

@return an unfinished future representing the eventual result of the {@code rabbitmq-server} process running in "foreground".
@throws StartupException if anything fails while attempting to start and confirm successful initialization.
@see ShutdownHelper