我正在我的项目中积极使用ActiveMQ
。虽然生产使用独立ActiveMQ
实例,但我的测试需要嵌入式ActiveMQ
实例。执行特定测试方法后ActiveMQ
在队列中保存未处理的消息。我想在每次测试后消灭ActiveMQ
个实例。我尝试使用JMX
连接到本地ActiveMQ
实例并清除队列,但这是重量级解决方案。有谁能建议我更轻量级的东西?
答案 0 :(得分:4)
在为单元测试定义代理URL时,只需关闭代理持久性
vm://localhost?broker.persistent=false
答案 1 :(得分:3)
ActiveMQ可以选择在启动时删除所有消息,如果使用XML方式配置ActiveMQ代理,则可以在< activemq>标签
<activemq:broker .... deleteAllMessagesOnStartup="true">
...
</activemq:broker>
另一种方法可能是每单元测试使用唯一的数据目录,这是我们在使用嵌入式ActiveMQ代理进行单元测试camel-jms组件时所做的。我们有一个帮助类,为我们设置ActiveMQ,具体取决于我们是否需要持久队列
答案 2 :(得分:-1)
我相信你想要清除队列。有几种选择。
https://activemq.apache.org/how-do-i-purge-a-queue.html
来自链接
“您可以使用Web控制台查看队列,添加/删除队列,清除队列或删除/转发单个消息。另一个选项是使用JMX浏览队列并在QueueViewMBean上调用purge()方法。也可以通过BrokerViewMBean上的removeQueue(String)或removeTopic(String)方法删除队列。你也可以通过编程方式“
该链接详细描述了每个选项