我正在尝试通过 Thoughts of Tim Bish 删除预定的延迟消息
已正确安排消息,但无法删除已安排的消息。
正在使用 ActiveMq-5.15.3
还从 activemq.xml 启用 schedulerSupport="true"
这是我的代码
/**
* #1 Send 5 message with delayed time 60sec's
*/
//send delayed message
Destination destination = session.createQueue("test");
producer = session.createProducer(destination);
Message message = session.createTextMessage(getCustomerMessage());
long delay = 1 * 1000*60;
message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);
for(int i=0; i<5; i++{
producer.send(message);
}
//end
运行上面的代码后,Web 控制台将显示如下屏幕截图所示的结果。 预定选项卡:
一分钟后,所有消息都移至队列(就像普通消息一样),这很好。
但是,我想取消所有预定的消息并且不需要放入队列。 我运行下面的程序来删除所有预定的消息。 (1分钟前)
//remove all schedule
Destination destination = session.createQueue("test");
MessageProducer mproducer = session.createProducer(destination);
Message request = session.createMessage();
request.setStringProperty(ScheduledMessage.AMQ_SCHEDULER_ACTION,
ScheduledMessage.AMQ_SCHEDULER_ACTION_REMOVEALL);
mproducer.send(request);
//end
以上代码未从预定消息中删除。只需像普通消息一样放入队列即可。
也尝试过
createTopic(ScheduledMessage.AMQ_SCHEDULER_MANAGEMENT_DESTINATION) instead of createQueue("test")
通过浏览属性删除也不起作用
browser.receive(5000);
browser.receive 总是返回 null
请纠正我,我做错了什么?
谢谢
最佳答案
您正在尝试从实际目标而不是计划程序的管理目标中删除所有计划消息。您应该将全部删除定向到管理目标,如下所示:
Destination management = session.createTopic(ScheduledMessage.AMQ_SCHEDULER_MANAGEMENT_DESTINATION);
MessageProducer mproducer = session.createProducer(destination);
Message request = session.createMessage();
request.setStringProperty(ScheduledMessage.AMQ_SCHEDULER_ACTION,
ScheduledMessage.AMQ_SCHEDULER_ACTION_REMOVEALL);
mproducer.send(request);
关于java - 无法删除 ActiveMQ ScheduledMessage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51097831/