Я работаю с ActiveMQ и создаю производителя и потребителя для некоторых сообщений.
Таким образом я создаю соединение и создаю место назначения:
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(username,password,"tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("MyQueue");
Таким образом я создаю производителя и отправляю сообщение:
Producer producer = session.createProducer(destination);
producer.send(msgToSend);
Я создаю потребителя и устанавливаю для него прослушиватель (класс, который реализует интерфейс MessageListener)
Consumer consumer = session.createConsumer(destination);
consumer.setMessageListener(this);
Потребитель подключается к месту назначения и прослушивает сообщения. Когда он получает несколько сообщений из очереди «MyQueue», запускается метод onMessage() из MessageListener и делает с сообщением все, что я хочу.
Мой код работает, и я могу создавать и потреблять сообщения. Производитель находится на сервере, а потребитель — на клиенте (отдельный проект).
Чтобы это заработало, я установил apache-activemq-5.14.4-bin.zip из здесь. и я помещаю зависимость в pom.xml:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.14.0</version>
</dependency>
Теперь установленный ActiveMQ — это служба, которая запускается при запуске компьютера. Я хочу не устанавливать его как службу, а запускать и программно останавливать в java. Например, нажать кнопку «Пуск» и выполнить код, чтобы запустить его, а затем нажать «Стоп» и остановить его.
Можно ли добиться этого программно, не устанавливая ActiveMQ как службу?