You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决ActiveMQ配置SQL Server持久化后消息未写入ACTIVEMQ_MSGS表问题

问题排查与修复方案

以下是你配置中存在的问题及对应修复方案,逐一调整即可解决问题:

  • 1. JDBC适配器适配错误
    你当前使用了通用的<transact-jdbc-adapter />,SQL Server需要指定专用的MSSQL适配器,替换为以下配置:
<adapter>
    <mssql-jdbc-adapter />
</adapter>

这是核心错误,通用适配器无法正确适配SQL Server的消息写入逻辑,会出现建表正常但数据写入失败的问题。

  • 2. Openwire协议端口配置错误
    你当前的transportConnector配置端口为0,属于随机端口分配:
<transportConnector name="openwire" uri="tcp://0.0.0.0:0?maximumConnections=1000" />

ActiveMQ Web控制台默认会连接本地61616端口的broker发送消息,调整为固定端口即可:

<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000" />

修改后确认broker启动时61616端口正常监听,再从控制台发消息测试。

  • 3. 确认发送的消息为持久化类型
    ActiveMQ默认只有持久化消息才会写入到持久化存储,你从控制台发送消息时,需要勾选Persistent选项;如果是代码发送消息,需要设置deliveryMode=2(持久化模式)。
  • 4. 可选调整:队列内存限制优化
    你当前队列的memoryLimit设置为1mb,过小的内存限制可能触发消息异步刷盘延迟,建议调整到100mb以上测试:
<policyEntry queue=">" producerFlowControl="true" memoryLimit="100mb" />

全部调整完成后重启ActiveMQ,重新发送消息即可在ACTIVEMQ_MSGS表中看到对应的消息记录。

内容的提问来源于stack exchange,提问作者ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:15:02