我需要运行一个独立应用程序的 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-data\fileProcessorLocalBroker\KahaDB\lock is locked... waiting 10 seconds for the database to be unlocked. Reason: java.io.IOException: File 'activemq-data\fileProcessorLocalBroker\KahaDB\lock' could not be locked.>
是否可以使用动态名称作为本地经纪人的属性brokerName?
问候
最佳答案
ActiveMQ 本身不支持使用动态代理名称启动。但是,您可以使用属性表达式从某些 ENV 值或您定义的其他源读取名称。请参阅this article一些线索:
关于java - ActiveMQ 中代理的动态名称,可在同一台计算机上运行 2 个或多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24863258/