java - 无法删除 ActiveMQ ScheduledMessage?

标签 java jms activemq

我正在尝试通过 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 控制台将显示如下屏幕截图所示的结果。 预定选项卡: enter image description here

一分钟后,所有消息都移至队列(就像普通消息一样),这很好。

但是,我想取消所有预定的消息并且不需要放入队列。 我运行下面的程序来删除所有预定的消息。 (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/

相关文章:

java - 不断从MYSQL的表中获取内容

java - java中日期的解析

Java - 我的代码中有一个额外的字符?

java - 无法构建新的 Openfire 插件

jms - ActiveMQ - 通过命令行删除/清除所有队列

java - 意见: JMS vs ebXML

java - ActiveMQ:如何使旧消息出队?

java - 一起使用 ActiveMQ 和 GlassFish

java - 使用 JmsTemplate 发送到 ActiveMQ 时出现文本消息编码问题

java - Web 应用程序的 PHP 前端和 Java 后端?