ActiveMQ 5 + Wildfly 11
Установка сервера ActiveMQ
Если сервер ActiveMQ у вас уже стоит, смело пропускайте эту часть. На момент выхода статьи, доступен ActiveMQ версии 5.
1) Скачаем сервер ActiveMQ с официального сайта и куда-нибудь распакуем.
2) Определим пользователей в файле conf/jetty-realm.properties, используя образец внутри.
Сервер ActiveMQ кроссплатформенное приложение и в папке bin находим версии для Windows и Linux.
3) Запустим скрипт с параметром start.
cd bin ./activemq start
4) Если все сделано верно, можно посетить админку http://localhost:8161/admin/
О WildFly
Все описанное далее выполнялось и проверялось на чистой копии WildFLy 11, запущенной в режиме standalone и взятой с официального сайта. Адаптер ActiveMQ требует профиля WildFly уровня не ниже full, поэтому необходимо запускать WildFly c параметром -c standalone-full.xml
cd bin ./standalone.sh -c standalone-full.xml
Устанавливаем Resource Adapter
1) Получим с официального сайта файл activemq-rar-5.11.1.rar, для данного мануала нужна именно эта версия.
Не путать с архиватором Александра Рошала, в данном случае расширение rar указывает на специальный тип файла resource adapter, который традиционно упакован в zip. Да, да! Файл с расширением rar, является архивом zip.
2) Распакуем содержимое activemq-rar-5.11.1.rar в папку modules/org/apache/activemq/ra/main/, в эту же папку подкладываем файл module.xml
module.xml - файл, с прописанными зависимостями, устанавливаемого модуля в WildFly, приложенный подходит только для версии адаптера 5.11.1, для другой версии адаптера вы можете сделать его самостоятельно, по аналогии.
3) Задеплоим файл activemq-rar-5.11.1.rar на WildFly, подложив его в папку standalone/deployments.
4) Поправим конфиг standalone-full.xml, располагающийся в папке standalone/configuration.
5) Заменим секцию urn:jboss:domain:resource-adapters на:
XATransaction tcp://localhost:61616?jms.rmIdFromConnectionId=true admin admin false 1 20 false false 1 true TestQueue TestTopic
6) Заменим секцию urn:jboss:domain:messaging-activemq на:
7) Изменим секцию urn:jboss:domain:ejb3:
... ... ...
Пишем HelloWorld.war
В этот раз, я не буду приводить весь код, но отмечу основные моменты. Вы можете сразу скачать сырцы helloworld-activemq-mdb. Отправка сообщений производится силами встроенного сервлета, достаточно пройти по адресу http://localhost:8080/helloworld-activemq-mdb/jms/. Если всё настроено верно, в консоле WildFly появится тестовое сообщение.
Приём сообщений.
Вы можете не указывать раздел
@MessageDriven(name = "TestQueue", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "TestQueue"),
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge") })
public class Consumer implements MessageListener {
public void onMessage(Message rcvMessage) {
...
}
}
Отправка сообщений:
public class Producer extends HttpServlet {
@Resource(lookup = "java:/ConnectionFactory")
ConnectionFactory cf;
@Resource(lookup = "java:/queue/TestQueue")
private Queue queue;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Connection connection = null;
connection = cf.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer publisher = session.createProducer(queue);
connection.start();
TextMessage message = session.createTextMessage("Hello!");
publisher.send(message);
...
}
}
Скачать конфиг
standalone-full.xml
31 КБ
Скачать конфиг
module.xml
1.8 КБ
Скачать приложение-пример
src-helloworld-activemq-mdb.zip
4.1 КБ