package rod; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import rx.Observable; @Service public class RabbitmqAdapter { private static final Logger logger = LoggerFactory.getLogger(RabbitmqAdapter.class); private final static Runtime runtime = Runtime.getRuntime(); private final static boolean rabbitmqCommandSudo = RodProperties.isRabbitmqCommandSudo(); private final RabbitmqStartServerCommand startServerCommand; private final RabbitmqStopServerCommand stopServerCommand; public RabbitmqAdapter() { logger.info("RabbitMQ command sudo: {}", rabbitmqCommandSudo); startServerCommand = new RabbitmqStartServerCommand.Builder() .command(RodProperties.getRabbitmqServerCommand()) .withArguments(RodProperties.getRabbitmqServerCommandArguments()) .sudo(rabbitmqCommandSudo) .runtime(runtime) .build(); stopServerCommand = new RabbitmqStopServerCommand.Builder() .command(RodProperties.getRabbitmqCtlCommand()) .sudo(rabbitmqCommandSudo) .runtime(runtime) .build(); } public void startServer() { logger.info("Executing command to start RabbitMQ"); startServerCommand.execute(); } public Observable<String> getStartOutput() { return startServerCommand.getOutput(); } public void stopServer() { logger.info("Executing command to stop RabbitMQ"); stopServerCommand.execute(); } public Observable<String> getStopOutput() { return stopServerCommand.getOutput(); } }