1. Установка Artemis MQ:
1.1. Установка базовых пакетов
yum -y install java-1.8.0-openjdk-headless yum -y install libaio
1.2. Скачать дистрибутив с сайта https://activemq.apache.org/artemis/past-releases.html. Версию дистрибутива можно брать последнюю.
1.3. Расположить дистрибутив в каталоге /opt/
1.4. Выполнить переход в каталог расположения дистрибутива и разархивировать его:
cd /opt/ tar -xzf apache-artemis-2.6.2-bin.tar.gz mv apache-artemis-2.6.2 artemis
1.5. Выполнить установку:
где, 127.0.0.1 заменить на ip сервера, на котором выполняется установка Artemis MQ
/opt/artemis/bin/artemis create addresses 127.0.0.1 --allow-anonymous --user admin --password admin --host 127.0.0.1 /opt/broker
1.6. Указать в файле bootstrap.xml, пример расположения /opt/broker/etc/, ip и port, на которых будет доступен административный интерфейс:
host - сервер, на котором выполняется установка Artemis MQ
port - используется в url в браузере для доступа к интерфейсу брокера
Пример: http://host:port/console/login
<web bind="http://host:port" path="web">
Указать в файле jolokia-access.xml, пример расположения /opt/broker/etc/, набор подсетей для доступа к веб-интерфейсу:
К примеру, если доступ нужен только из сети интертраст:
<allow-origin>*://169.254.*</allow-origin>
1.7. Отредактировать в broker.xml, пример расположения /opt/broker/etc/, блок <address-settings>..</address-settings> до вида:
(можно полностью заменить блок куском ниже)
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@localhost ~]# nano /etc/selinux/config Поправить в файле параметр: SELINUX=disabled
1.9. Проверить значение параметра max-disk-usage в broker.xml, пример расположения /opt/broker/etc/
<!-- once the disk hits this limit the system will block, or close the connection in certain protocols that won't support flow control. --> <max-disk-usage>90</max-disk-usage>
Скорректировать его при необходимости. Данный параметр регулирует блокировку обращений к брокеру, когда дисковое пространство меньше указанного значения в %.
То есть, если свободного пространства на дисках будет меньше 90%, как указано выше, то сервер приложений с СМ не сможет достучаться до Брокера. В логе будут ошибки вида:
2. Запуск брокера.
Настройка службы и добавление ее в автозапуск (брокер будет запускаться перед wildfly, если установка обоих компонентов выполнялась на одном сервере):
nano /etc/systemd/system/artemis.service
Содержимое artemis.service:
[Unit] Description=Artemis Server After=syslog.target network.target Before=wildfly.service [Service] User=root PIDFile=/opt/broker/data/artemis.pid ExecStart=/opt/broker/bin/artemis-service start ExecStop=/opt/broker/bin/artemis-service stop StandardOutput=null [Install] WantedBy=multi-user.target
Теперь, для старты / остановки / проверки статуса службы необходимо использовать команды:
systemctl start artemis
systemctl stop artemis
systemctl status artemis
Добавление службы в автозагрузку:
systemctl enable artemis
3. Создание скрипта
Создаем .sh скрипт на сервере Artemis MQ (к примеру, /opt/artemis.sh) и запускаем его.
Для запуска скрипта необходимо, чтобы брокер был запущен!
Выполнить переход в каталог /opt, создать .sh скрипт:
`hostname` - параметр по умолчанию редактировать не нужно. Но, если возникнет ошибка при исполнении скрипта, то место `hostname` указать ip сервера установки Artemis MQ.
61616 - порт, используемый по умолчанию. Указан в конфиге broker.xml, пример расположения /opt/broker/etc, блок <acceptor name="artemis"..</acceptor>
host=tcp://`hostname`:61616 topics="ConfigurationUpdateTopic ClusterNotificationTopic chlog am-to-many" queues="ClusterNotificationDelayQueue cmjBusinessQueue am-to-any to-am" for t in $topics; do /opt/artemis/bin/artemis address create \ --multicast \ --no-anycast \ --name jms.topic.$t \ --url $host done for q in $queues; do /opt/artemis/bin/artemis queue create \ --anycast \ --no-durable \ --preserve-on-no-consumers \ --auto-create-address \ --address jms.queue.$q \ --name jms.queue.$q \ --url $host done
Важно: нельзя выделять для копирования содержимое скрипта двойным кликом, иначе в строки будут добавлены некорректные пробелы
Сохранить скрипт, выдать права на запуск:
[root@host_artemis opt]# chmod 777 ./artemis.sh
Выполнить запуск скрипта .sh:
[root@host_artemis opt]# ./artemis.sh
4. Дополнительные настройки с учетом использования отложенных очередей
4.1. Настройки в broker.xml
В broker.xml должно быть добавлено 2 блока(после выполнения настроек брокер необходимо перезапустить):
<diverts> <divert name="chlog-delayed-divert"> <routing-name>chlog-delayed-divert</routing-name> <address>jms.topic.chlog</address> <forwarding-address>jms.topic.chlog-delayed</forwarding-address> <transformer> <class-name>ru.intertrust.artemis.server.transformer.DelayDeliveryTransformer</class-name> <property key="delay" value="15000"/> <!-- 15 сек.--> </transformer> <exclusive>false</exclusive> </divert> </diverts>
и
<address-setting match="jms.topic.chlog-delayed"> <dead-letter-address>DLQ</dead-letter-address> <expiry-address>ExpiryQueue</expiry-address> <redelivery-delay>15000</redelivery-delay> <max-delivery-attempts>5</max-delivery-attempts> <redelivery-delay-multiplier>1.0</redelivery-delay-multiplier> <!-- with -1 only the global-max-size is in use for limiting --> <max-size-bytes>-1</max-size-bytes> <message-counter-history-day-limit>10</message-counter-history-day-limit> <address-full-policy>PAGE</address-full-policy> <auto-create-queues>true</auto-create-queues> <auto-create-addresses>true</auto-create-addresses> <auto-create-jms-queues>true</auto-create-jms-queues> <auto-create-jms-topics>true</auto-create-jms-topics> </address-setting>
4.2. Положить в папку lib delay-delivery-transformer.jar
4.3. Настройки в интерфейсе менеджера агентов
Создать ещё одну JMS-Очередь с названием jms.topic.chlog-delayed
Данную очередь необходимо выбрать в настройке запуска
4.4. Скрипт создания топика на брокере
После выполнения настроек(или можно заранее), если топик chlog-delayed не создался автоматически, выполнить скрипт для создания
host=tcp://`hostname`:61616 topics="chlog-delayed" /opt/artemis/bin/artemis address create \ --multicast \ --no-anycast \ --name jms.topic.chlog-delayed \ --url $host
5. Интерфейс брокера
Войти в интерфейс брокера можно по ссылке
http://host_artemis.inttrust.ru:port_atemis/console/login
см. пункт 1.6 - в нем задается порт для доступа к веб-интерфейсу брокера.
Вид интерфейса: