ActiveMQ如何仅删除某些计划的元素

时间:2019-02-19 11:29:41

标签: jms activemq scheduler

我有一个ActiveMQ消息传递系统,我只想从队列中删除一些计划的消息。

我可以通过ScheduledMessage.AMQ_SCHEDULER_ACTION_REMOVEALL删除所有计划的邮件 邮件发送到队列。

我可以通过发送AMQ_SCHEDULER_ACTION_REMOVE消息来按ID删除消息。

但是有没有办法使用选择器(可能是消息的属性)删除所有消息?

我检查了ActiveMQ的Jolokia REST API,但似乎有关计划消息的信息不可用。

1 个答案:

答案 0 :(得分:2)

否,当前不支持该功能。您需要查看源代码并自己实现,然后再将其贡献给社区。尽管尝试使用消息代理,但是有一条细线,因为数据库会转过身来咬你,所以我建议在这方面保持谨慎。

您需要实现一个新的remove指令,例如AMQ_SCHEDULER_ACTION_REMOVE_SELECTED,并定义选择器在这种情况下的工作方式(SQL92字符串等),然后在Scheduler存储接口上添加一个API,并在KahaDB模块的Scheduler实现中实现它。