首页 > 解决方案 > ActiveMQ 在使用 systemctl 启动时以从属模式启动

问题描述

使用systemctl. 服务器以从模式启动:

[pid: ][main] 08 Oct 2021 18:15:46  INFO XBeanBrokerFactory$1 - Refreshing org.apache.activemq.xbean.XBeanBrokerFactory$1@68bbe345: startup date [Fri Oct 08 18:15:46 UTC 2021]; root of context hierarchy
[pid: ][main] 08 Oct 2021 18:15:46  INFO XBeanXmlBeanDefinitionReader - Loading XML bean definitions from URL [file:/var/tmp/amq/conf/activemq-nojournal-persistent-SSL.xml]
[pid: ][main] 08 Oct 2021 18:15:46  INFO XBeanXmlBeanDefinitionReader - Loading XML bean definitions from URL [file:/var/tmp/amq/conf/jetty.xml]
[pid: ][main] 08 Oct 2021 18:15:47  INFO BrokerService - Using Persistence Adapter: KahaDBPersistenceAdapter[/var/tmp/amq/data/kahadb]
[pid: ][KahaDB Index Free Page Recovery] 08 Oct 2021 18:15:47  INFO PageFile - Page File: /var/tmp/amq/data/kahadb/db.data. Recovering pageFile free list due to prior unclean shutdown..
[pid: ][KahaDB Index Free Page Recovery] 08 Oct 2021 18:15:47  INFO PageFile - Page File: /var/tmp/amq/data/kahadb/db.data. Recovered pageFile free list of size: 0
[pid: ][main] 08 Oct 2021 18:15:47  INFO MessageDatabase - KahaDB is version 7
[pid: ][main] 08 Oct 2021 18:15:47  INFO PListStoreImpl - PListStore:[/activemq-data/broker-persistent-SSL/tmp_storage] started
[pid: ][main] 08 Oct 2021 18:15:47  INFO SharedFileLocker - Database activemq-data/broker-persistent-SSL/scheduler/lock is locked by another server. This broker is now in slave mode waiting a lock to be acquired

sudo -u <user>如果我使用它启动代理,它会正确启动。

这被配置为以持久性运行 SSL:

    <broker xmlns="http://activemq.apache.org/schema/core" 
     useJmx="true"
        persistent="true" 
        dedicatedTaskRunner="false" 
        schedulerSupport="true"
        brokerName="broker-persistent-SSL">

这是过程:

/usr/bin/java -Dlog4j.dir=/var/tmp/amq/log -Dlog_instance=ip-172-31-51-195.ec2.internal -Dinvenio_log_component=mqbroker -Dcom.sun.management.jmxremote.port=51520 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote -Djavax.net.ssl.keyStore=/var/tmp/amq/conf/broker.ks -Djavax.net.ssl.keyStorePassword=<password> -Djavax.net.ssl.trustStore=/var/tmp/amq/conf/broker.ts -Djavax.net.ssl.trustStorePassword=<password> -Djava.awt.headless=true -Djava.io.tmpdir=/var/tmp/amq/tmp -Dactivemq.classpath=/var/tmp/amq/conf:/var/tmp/amq/../lib/: -Dactivemq.home=/var/www/mqbroker/apache-activemq-5.16.2 -Dactivemq.base=/var/tmp/amq -Dactivemq.conf=/var/tmp/amq/conf -Dactivemq.data=/var/tmp/amq/data -jar /var/www/mqbroker/apache-activemq-5.16.2/bin/activemq.jar start xbean:file:/var/tmp/amq/conf/activemq-nojournal-persistent-SSL.xml

更多进程信息:使用 systemctl 启动代理。使用 netstat 我只看到一个 java 进程,它是代理..

tcp6       0      0 :::51520                :::*                    LISTEN      4597/java
tcp6       0      0 :::51521                :::*                    LISTEN      4597/java
tcp6       0      0 :::41320                :::*                    LISTEN      4597/java. 

SSL 在 61617 上,它不在我假设的列表中,因为它处于从属模式。lsof 仅显示 4597 进程已打开锁定文件

这就是使用 sudo -u 开始的过程。以这种方式启动不会将代理置于从属模式

tcp6       0      0 :::51520                :::*                    LISTEN      4838/java
tcp6       0      0 :::51521                :::*                    LISTEN      4838/java
tcp6       0      0 :::61617                :::*                    LISTEN      4838/java
tcp6       0      0 :::45521                :::*                    LISTEN      4838/java

lsof 在这种情况下显示两个文件锁..一个用于 kahadb/lock,一个用于 activemq-data.../scheduler/log

我已经删除了锁定文件并重新启动。这台机器上没有其他经纪人

谁能给我一个暗示可能是什么原因造成的?

标签: activemqsystemctl

解决方案


推荐阅读