我需要运行一个独立应用程序的2个实例,该实例在同一台机器上使用JMS和本地ActiveMQ。我有一个在应用程序启动时加载的jms-context配置文件。我使用KahaDB作为持久性适配器
两个实例的jms-context文件是相同的,所以localBroker的属性"brokerName"具有相同的名称。
<bean id="broker" class="org.apache.activemq.xbean.XBeanBrokerService">
<property name="useJmx" value="true"/>
<property name="brokerName" value="fileProcessorLocalBroker"/>
<property name="persistent" value="true"/>
<property name="destinationPolicy" ref="destinationPolicy"/>
<property name="managementContext" ref="managementContext"/>
<property name="persistenceAdapter" ref="persistenceAdapter"/>
...
</bean>
当我运行我的应用程序的第二个实例时,我得到以下内容:
2014-07-21 12:37:04,377 INFO [org.apache.activemq.store.SharedFileLocker] - <Database activemq-datafileProcessorLocalBrokerKahaDBlock is locked... waiting 10 seconds for the database to be unlocked. Reason: java.io.IOException: File 'activemq-datafileProcessorLocalBrokerKahaDBlock' could not be locked.>
是否有使用动态名称的属性brokerName的localbroker?
对
ActiveMQ本身不支持使用动态Broker名称启动。但是,您可以使用属性表达式从您定义的一些ENV值或其他源中读取名称。