Запуск ActiveMQ программно, а не как служба

Я работаю с 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 как службу?


person Nelly Junior    schedule 28.03.2017    source источник


Ответы (2)


Перейдите по ссылке, чтобы запустить и остановить брокер программно http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html

person LONGHORN007    schedule 28.03.2017

Да, вы можете использовать ActiveMQ программно (например, в тестах). Вот некоторые подробности: http://activemq.apache.org/how-to-unit-test-jms-code.html

person Vyacheslav Enis    schedule 28.03.2017