Я использую Wildfly 14 и ActiveMQ Artemis 2.7.0. Конфигурация ActiveMQ Artemis в Wildfly standalone-full-ha.xml, как показано ниже.
<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"/>
<connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="remote-artemis1" ha="true" client-failure-check-period="1000" retry-interval="1000" reconnect-attempts="-1"/>
<pooled-connection-factory name="activemq-ra" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory" connectors="remote-artemis1" ha="true" client-failure-check-period="1000" connection-ttl="-1" call-timeout="300000" client-id="Wildfly-14" retry-interval="1000" reconnect-attempts="-1" use-global-pools="false" thread-pool-max-size="120" transaction="xa" user="admin" password="admin" min-pool-size="40" max-pool-size="200" initial-connect-attempts="10"/>
</server>
</subsystem>
Создана фабрика соединений с использованием java: / JmsXA в моем приложении Ниже приведен код для очереди поиска /тема во внешнем артемисе
Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory");
env.put(JmsUtils.JMS_CONNECTION_FACTORY_URL, "tcp://localhost:61616");
context = new InitialContext(env);
(Destination) context.lookup("dynamicQueues/TestQueue");
В ActiveMQ Artemis 2.7.0 я добавил следующие настройки в address-settings
:
<auto-create-queues>true</auto-create-queues>
<auto-create-addresses>false</auto-create-addresses>
Когда я развертываю свое приложение в Wildfly и пытаюсь отправитьсообщение TestQueue
, тогда мое приложение успешно создаст адрес, хотя в broker.xml
очереди нет; также я добавил параметр auto-create-addresses
как false
Можете ли вы предоставитьРешение, если очередь не существует в broker.xml
, приложение выдает исключение.