我正在使用apache-activemq-5.11.1,这是在JDK 7(主要版本51.0)上运行的稳定版本,我在使用JDK 7 Update80。如果在JDK 6上运行相同的版本,则会出错。


线程“主”中的异常java.lang.UnsupportedClassVersionError:org / apache / ac
tivemq / console / Main:不支持的major.minor版本51.0


遇到问题,我需要在系统中有两个正在运行的ActiveMQ实例。我按照以下步骤创建了两个实例。

C:\>cd \apache-activemq-5.11.1
C:\apache-activemq-5.11.1>.\bin\activemq create instance1
C:\apache-activemq-5.11.1>.\bin\activemq create instance2


我已将实例2的端口号更改为另一组,

<!--EDITED: apache-activemq-5.11.1\instance2\conf\activemq.xml-->

    <transportConnectors>
        <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
        <transportConnector name="openwire" uri="tcp://0.0.0.0:61716?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="amqp" uri="amqp://0.0.0.0:5772?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="stomp" uri="stomp://0.0.0.0:61713?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1983?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        <transportConnector name="ws" uri="ws://0.0.0.0:61714?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    </transportConnectors>


现在,我按以下方式启动instance1和instance2。

C:\apache-activemq-5.11.1\instance1\bin>instance1 start
C:\apache-activemq-5.11.1\instance1\bin>instance2 start


在这些实例中,我尝试启动的第二个实例给出了以下kahadb锁定问题.....

 INFO | Refreshing org.apache.activemq.xbean.XBeanBrokerFactory$1@7209d9af: startup date [Thu May 07 16:16:23 IST 2015]; root of context hierarchy
 INFO | PListStore:[C:\apache-activemq-5.11.1\data\localhost\tmp_storage] started
 INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[C:\apache-activemq-5.11.1\data\kahadb]
 INFO | Database C:\apache-activemq-5.11.1\data\kahadb\lock is locked... waiting 10 seconds for the database to be unlocked. Reason: java.io.IOException: File 'C:\apache-activemq-5.11.1\data\kahadb\lock' could not be locked.


请提供此数据库锁定问题的解决方案。

最佳答案

制作ActiveMQ的副本,例如apache-activemq-x.xx.xapache-activemq-x.xx.x_2

更改apache-activemq-x.xx.x_2\conf\activemq.xml的端口。确保您要更改的端口号没有冲突。

<!--EDIT: apache-activemq-5.11.1_2\conf\activemq.xml-->
<transportConnectors>
    <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61716?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="amqp" uri="amqp://0.0.0.0:5772?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="stomp" uri="stomp://0.0.0.0:61713?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1983?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    <transportConnector name="ws" uri="ws://0.0.0.0:61714?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
</transportConnectors>


随着端口的更改,我们还必须更正jetty.xml http管理控制台端口。

<bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">
         <!-- the default port number for the web console -->
    <property name="host" value="0.0.0.0"/>
    <property name="port" value="8162"/>
</bean>


这样,您可以在一个系统中运行ActiveMQ的两个服务。

08-04 15:15