#wildfly #activemq-artemis
#wildfly #activemq-artemis
Вопрос:
Настроил Artemis с политикой ha, как показано ниже:
Machine1: artemis-server1-master
<ha-policy>
<shared-store>
<master>
<failover-on-shutdown>true</failover-on-shutdown>
</master>
</shared-store>
</ha-policy>
Machine2: artemis-server2-master
<ha-policy>
<shared-store>
<master>
<failover-on-shutdown>true</failover-on-shutdown>
</master>
</shared-store>
</ha-policy>
server1-slave и server2-slave
<ha-policy>
<shared-store>
<slave>
<failover-on-shutdown>true</failover-on-shutdown>
<restart-backup>true</restart-backup>
<allow-failback>true</allow-failback>
</slave>
</shared-store>
</ha-policy>
В Wildfly были настроены параметры Artemis, приведенные ниже:
<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
<server name="default">
<http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/>
<remote-connector name="remote-artemis1" socket-binding="remote-artemis1"/>
<remote-connector name="remote-artemis2" socket-binding="remote-artemis2"/>
<connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="remote-artemis1 remote-artemis2" client-failure-check-period="1000" reconnect-attempts="-1" retry-interval="1000" ha="true"/>
<pooled-connection-factory name="activemq-ra" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory" connectors="remote-artemis1 remote-artemis2" client-id="Wildfly-14" transaction="xa" user="admin" password="admin" client-failure-check-period="1000" reconnect-attempts="-1" retry-interval="1000" ha="true"/>
</server>
</subsystem>
В приложении ear есть MDB для получения сообщения. Также используется java:/jmsXA
для поиска фабрики соединений.
После выполнения вышеуказанной конфигурации и запуска Wildfly она успешно обрабатывается и отправляется сообщение (т. е. создается соединение с использованием jmsXA connection factory) в очередь. Но при обработке нескольких файлов и в промежутках между завершением работы любого из мастеров Artemis mdb получит сообщение успешно, но с помощью java:/jmsXA
connectionfactory не сможет отправить сообщение, хотя другой мастер не отключен.
Комментарии:
1. Можете ли вы уточнить конфигурацию вашего HA?
2. Машина 1: artemis-server1-master <ha-policy> <shared-store> <master> <отказоустойчивость при завершении работы> true</отказоустойчивостьпризавершенииработы> </master> </shared-store> </ha-policy> Машина 2: artemis-server2-master <ha-policy> <shared-store> <master> <отказоустойчивость при завершении работы> true</failover-on-shutdown> </master> </shared- хранилище> </ha-policy> сервер1-подчиненный и сервер2-подчиненный <ha-policy><shared-store><slave><failover-on-shutdown>true</failover-on-shutdown><restart-backup>true</restart-backup><allow-failback>true</allow-failback></slave></shared-store></ha-policy>
3. Я действительно не понимаю топологию. Расположены ли подчиненные устройства совместно с действующим экземпляром или это выделенные экземпляры? Когда вы завершаете работу главного устройства, видите ли вы, что подчиненное устройство принимает управление (т. Е. активируется)?
4. ДА. При завершении работы master, slave становятся активными. Также имеет место перекрестное сопоставление. Имеется в виду, что главная резервная копия находится на другом компьютере. Если возможно, можете ли вы, пожалуйста, указать мне правильную конфигурацию, если приведенная выше ошибка