activemq消息常见清除方式,
1.通过可视化客户端手动清理
2.通过终端手动清理
3.通过配置,自动清理
topic和queue上的消息堆积无消费或者其他情况,容易造成activemq异常甚至消息过多导致内存崩溃,所以需要定时清除一些没有活动或者活动极少和死信
因为activemq装在docker中,我们本次使用docker命令,设置配置文件
工具:xshell
1.docker ps -a 找到在运行的activemq容器id
2.docker exec -it 容器id /bin/bash 进入容器
3.cd conf/ 进入配置文件activemq.xml所在文件夹(我的进来conf就在下一层)
4.vim activemq.xml
5.增加如下配置,斜体处(policyEntry queue或者topic都是一样的)
<broker xmlns="http://activemq.apache.org/schema/core" schedulePeriodForDestinationPurge="10000">
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic=">" gcInactiveDestinations="true" inactiveTimoutBeforeGC="30000"/>
</policyEntries>
</policyMap>
</destinationPolicy>
</broker>
参数说明:
schedulePeriodForDestinationPurge:10000 每十秒检查一次,默认为0,此功能关闭
gcInactiveDestinations: true 删除掉不活动队列,默认为false
inactiveTimoutBeforeGC:30000 不活动30秒后删除,默认为60秒
6保存后退出ctrl+p+q,退出容器继续保持后台运行
7.docker restart 容器id
进入8161界面就可以看到toipc被自动清理了
注:最好通过配置文件映射,否则服务重启会导致容器中修改的配置被重置