从 Tomcat 应用程序启动 ActiveMQ,但在实例之间使用共享数据源
Starting ActiveMQ from Tomcat application ,but using a shared datasource among instances
我有一个成功的 运行 ActiveMQ 5.9.1 , Camel 2.11 和 Tomcat 7.0.50 依赖ActiveMQ的服务层应用独立启动。
我使用 ActiveMQ 的原因是在 2 个相同的负载平衡实例之间有一个共享数据存储以加快处理速度。
这是我想要做的:
能够从 pom.xml 或最坏情况下从 context.xml 启动 ActiveMQ。因此,假设 2 个实例是负载平衡的,它们启动自己的 ActiveMQ 服务器,但它们指向单个数据存储(目录)以获取队列信息。
请告知我如何才能拥有这样的设计以在生产环境中保持最佳性能。
我仍在寻找任何可以尝试的伪代码,但尚未成功。
来自 camelContext.xml
的代码片段
<broker id="broker" brokerName="myBroker" useShutdownHook="false" useJmx="true" persistent="true" dataDirectory="activemq-data"
xmlns="http://activemq.apache.org/schema/core">
<transportConnectors>
<transportConnector name="tcp" uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>
<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://myBroker?create=false&waitForStart=5000" />
</bean>
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
init-method="start" destroy-method="stop">
<property name="maxConnections" value="8" />
<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>
<bean id="activeMQConfig"
class="org.apache.activemq.camel.component.ActiveMQConfiguration">
<property name="connectionFactory" ref="pooledConnectionFactory" />
<property name="concurrentConsumers" value="20" />
</bean>
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="configuration" ref="activeMQConfig" />
<property name="transacted" value="true" />
<property name="cacheLevelName" value="CACHE_CONSUMER" />
</bean>
请帮忙。
我终于解决了这个问题。以防其他人遇到同样的问题,我将 ActivemQ 版本降级到 5.8.0 来解决这个问题。
我有一个成功的 运行 ActiveMQ 5.9.1 , Camel 2.11 和 Tomcat 7.0.50 依赖ActiveMQ的服务层应用独立启动。 我使用 ActiveMQ 的原因是在 2 个相同的负载平衡实例之间有一个共享数据存储以加快处理速度。
这是我想要做的: 能够从 pom.xml 或最坏情况下从 context.xml 启动 ActiveMQ。因此,假设 2 个实例是负载平衡的,它们启动自己的 ActiveMQ 服务器,但它们指向单个数据存储(目录)以获取队列信息。 请告知我如何才能拥有这样的设计以在生产环境中保持最佳性能。 我仍在寻找任何可以尝试的伪代码,但尚未成功。
来自 camelContext.xml
的代码片段<broker id="broker" brokerName="myBroker" useShutdownHook="false" useJmx="true" persistent="true" dataDirectory="activemq-data"
xmlns="http://activemq.apache.org/schema/core">
<transportConnectors>
<transportConnector name="tcp" uri="tcp://localhost:61616"/>
</transportConnectors>
</broker>
<bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://myBroker?create=false&waitForStart=5000" />
</bean>
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
init-method="start" destroy-method="stop">
<property name="maxConnections" value="8" />
<property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>
<bean id="activeMQConfig"
class="org.apache.activemq.camel.component.ActiveMQConfiguration">
<property name="connectionFactory" ref="pooledConnectionFactory" />
<property name="concurrentConsumers" value="20" />
</bean>
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="configuration" ref="activeMQConfig" />
<property name="transacted" value="true" />
<property name="cacheLevelName" value="CACHE_CONSUMER" />
</bean>
请帮忙。
我终于解决了这个问题。以防其他人遇到同样的问题,我将 ActivemQ 版本降级到 5.8.0 来解决这个问题。