ActiveMQ 5.19.x嵌入Camel 2.25.0未配SystemUsage却限存储100GB问题
异常原因
- ActiveMQ 5.19.x版本存在默认全局存储上限:你注释删除
systemUsage配置后,broker不会取消存储限制,而是加载默认的storeUsage上限值100GB,和你之前配置过的上限值无关,属于版本默认行为。 - 队列级
producerFlowControl=false配置仅能关闭单队列的生产流控规则,优先级低于broker全局存储上限校验,当全局存储占用触发阈值时,broker依然会强制停止生产者写入。 - Camel组件配置中
brokerURL携带的broker.persistent=true参数仅控制持久化开关,不会覆盖broker的默认全局存储上限配置。
解决方案
方案1:显式设置合理的全局存储上限
放开注释的systemUsage配置段,根据实际磁盘容量设置对应阈值,配置示例如下:
<amq:systemUsage> <amq:systemUsage> <amq:memoryUsage> <amq:memoryUsage limit="1 gb"/> <!-- 可根据实际内存调整 --> </amq:memoryUsage> <amq:storeUsage> <amq:storeUsage limit="500 gb"/> <!-- 按需设置存储上限,支持单位:b/kb/mb/gb/tb --> </amq:storeUsage> <amq:tempUsage> <amq:tempUsage limit="100 gb"/> <!-- 临时存储上限 --> </amq:tempUsage> </amq:systemUsage> </amq:systemUsage>
方案2:关闭全局存储硬限制
如果希望broker直接使用磁盘全部可用空间,无需额外限制,可将storeUsage的limit设为0即可:
<amq:storeUsage> <amq:storeUsage limit="0"/> </amq:storeUsage>
注意:修改配置后需重启ActiveMQ broker生效,重启前可通过JMX控制台查看当前
StoreUsage的Limit属性值,确认配置是否正常加载。
内容的提问来源于stack exchange,提问作者Radovan Bičiště
相关产品推荐
相关产品推荐

