java - 启用 schedulerSupport 将 activemq 代理置于从模式等待获取锁
问题描述
我计划在 activemq 中使用延迟,我指的是这样的一些帖子,人们提到了以下更改activemq.xml
以启用调度程序:
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" schedulerSupport="true">
所以,我在我的 activemq.xml 中做了完全相同的事情,结果如下:
C:\tan\my_softwares\apache-activemq-5.15.11\bin>activemq start
Java Runtime: Oracle Corporation 13.0.2 C:\Program Files\Java\jdk-13.0.2
Heap sizes: current=1048576k free=1042942k max=1048576k
JVM args: -Dcom.sun.management.jmxremote -Xms1G -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\conf\login.config -Dactivemq.classpath=C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\conf;C:\tan\my_softwares\apache-activemq-5.15.11\bin\../conf;C:\tan\my_softwares\apache-activemq-5.15.11\bin\../conf; -Dactivemq.home=C:\tan\my_softwares\apache-activemq-5.15.11\bin\.. -Dactivemq.base=C:\tan\my_softwares\apache-activemq-5.15.11\bin\.. -Dactivemq.conf=C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\conf -Dactivemq.data=C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\data -Djava.io.tmpdir=C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\data\tmp
Extensions classpath:
[C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\lib,C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\lib\camel,C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\lib\optional,C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\lib\web,C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\lib\extra]
ACTIVEMQ_HOME: C:\tan\my_softwares\apache-activemq-5.15.11\bin\..
ACTIVEMQ_BASE: C:\tan\my_softwares\apache-activemq-5.15.11\bin\..
ACTIVEMQ_CONF: C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\conf
ACTIVEMQ_DATA: C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\data
Loading message broker from: xbean:activemq.xml
INFO | Refreshing org.apache.activemq.xbean.XBeanBrokerFactory$1@1cbbffcd: startup date [Thu Jun 25 07:35:22 CDT 2020]; root of context hierarchy
INFO | Using Persistence Adapter: KahaDBPersistenceAdapter[C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\data\kahadb]
INFO | KahaDB is version 6
INFO | PListStore:[C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\data \localhost\tmp_storage] started
INFO | Database C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\data \localhost\scheduler\lock is locked by another server. This broker is now in slave mode waiting a lock to be acquired
在此之后,我无法访问 ActiveMQ 的 Web 控制台并http://localhost:8161/admin/index.jsp
导致Unable to connect
. 但是,如果我放回没有 schedulerSupport 的原始配置,一切正常,我可以访问 Web 控制台:
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
如何解决这个问题?
解决方案
调度程序使用自己的自定义 KahaDB 存储来管理调度消息,并且它使用的文件夹似乎对它使用的文件进行了锁定,以确保只有一个代理实例写入该存储。您需要调查是否有另一个代理实例访问该存储位置并停止它或更新配置以使用不同的位置。您还可以检查文件夹权限等。您还可以手动删除该文件夹中的所有文件,以确保删除旧的锁定文件。
即日志明确指出问题所在的目录。
INFO | Database C:\tan\my_softwares\apache-activemq-5.15.11\bin\..\data \localhost\scheduler\lock is locked by another server. This broker is now in slave mode waiting a lock to be acquired
推荐阅读
- javascript - 使用 javascript 和 php 登录帐户时无法重定向
- python - Python:叶地图没有出现
- typescript - 如何在打字稿中获得严格的值类型?
- ios - 自定义集合视图并在集合视图的单元格之间创建空间
- redirect - Cloudflare 重定向域
- hyperledger-fabric - Hyperledger Fabric:医院将如何共享特定的患者记录?
- python - Anaconda matplotlib 升级后 Spyder 停止工作
- c# - 如何使用库 TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator 在 c# 中最终生成的 pdf 文档中下载嵌入式图像?
- android - Android 仅通过选定的社交媒体应用分享详细信息
- c++ - 基类何时可以具有与相应的完整对象类型不同的布局?