我正在使用Wildfly 14和ActiveMQ Artemis 2.7.0。 如下在Wildfly standalone-full-ha.xml中配置ActiveMQ 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"/>
<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 创建连接工厂 以下是外部Artemis中查找队列/主题的代码
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
中没有队列,我的应用程序也会成功创建地址,并且我添加了{{1 }}为 false
能否请您提供解决方案,如果auto-create-addresses
中不存在队列,那么应用程序将引发异常。