我正在通过下面的context.xml在Tomcat中创建一个嵌入式ActiveMQ。它在代理URL brokerURL="vm://localhost?brokerConfig=xbean:activemq.xml"
中指定config xml位置。
我已将activemq.xml
放在WAR文件的基础上(所以 next 到WAR中的WEB-INF)。会在那里找到吗?
MyWAR.war
WEB-INF /
beans.xml中
activemq.xml
我的context.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!-- JMS Factory and Queue -->
<Resource auth="Container"
name="jms/ConnectionFactory"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="vm://localhost?brokerConfig=xbean:activemq.xml"
brokerName="MyBroker"
useEmbeddedBroker="true"
trustAllPackages="true"
persistent="true"
/>
<Resource auth="Container"
name="jms/MyQueue"
type="org.apache.activemq.command.ActiveMQQueue"
description="Downtime Event JMS queue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="MyQueue"
persistent="true"
/>
<Resource auth="Container"
name="jms/MyQueueRetry"
type="org.apache.activemq.command.ActiveMQQueue"
description="Downtime Event JMS queue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="MyQueueRetry"
persistent="true"
/>
</Context>
编辑:我更新的activemq.xml :
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:amq="http://activemq.apache.org/schema/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
<bean id="ioExceptionHandler" class="org.apache.activemq.util.DefaultIOExceptionHandler">
<property name="ignoreAllErrors"><value>true</value></property>
</bean>
<!-- MySql DataSource Sample Setup -->
<bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/activemq"/>
<property name="username" value="testuser"/>
<property name="password" value="password"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
<broker
xmlns="http://activemq.apache.org/schema/core"
persistent="true"
ioExceptionHandler="#ioExceptionHandler"
useShutdownHook="true"
useJmx="false"
brokerName="EventBroker"
>
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql-ds" />
</persistenceAdapter>
</broker>
</beans>
我也尝试了以下两种方法:
brokerURL="vm://localhost?brokerConfig=xbean:classpath:activemq.xml"
(并将其放入WEB-INF)
brokerURL="vm://localhost?brokerConfig=xbean:classpath:WEB-INF/activemq.xml"
它永远不会使用MySQL。
答案 0 :(得分:1)
有几种方式..
将org.apache.activemq的日志记录变为DEBUG或TRACE
在开放端口61618上添加其他条目。确认它正在使用netstat进行侦听。
此外,您可以连接到正在运行的JVM进程的JMX,并查看存在的org.apache.activemq JMX bean。
一对夫妇参考:
答案 1 :(得分:0)
(部分来自@Matt_Pavlovich的帮助)
你必须使用xbeans下的brokerURL="vm://localhost?brokerConfig=xbean:classpath:META-INF/activemq.xml"
密钥,它必须位于WAR类路径中可以找到的目录中(例如META-INF):
{{1}}