无法删除 ActiveMQ ScheduledMessage?

Unable to remove ActiveMQ ScheduledMessage?

我正在尝试通过 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总是return空

请指正我做错了什么?

谢谢

您正在尝试从实际目标而不是计划程序的管理目标中删除所有计划的消息。您应该将 remove-all 定向到管理目的地,如下所示:

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);