Не удается удалить ActiveMQ ScheduledMessage? - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь удалить запланированное задержанное сообщение через Мысли о Тиме Бише

Сообщение запланировано правильно, но невозможно удалить запланированное сообщение.

Я использую ActiveMq-5.15.3

Также включено schedulerSupport = "true" из activemq.xml

Вот мой код

     /**
      * #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

После запуска выше кода, веб-консоль покажет результат, как показано на снимке экрана ниже. Запланированная вкладка: 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) вместо createQueue («тест»)

удалить через свойство просмотра также не работает

    browser.receive(5000);

browser.receive всегда возвращает null

Пожалуйста, поправьте меня, что я делаю не так?

Спасибо

1 Ответ

0 голосов
/ 29 июня 2018

Вы пытаетесь удалить все запланированные сообщения из реального назначения, а не из назначения управления для Планировщика. Вы должны направить команду «удалить все» в пункт назначения управления, как показано ниже:

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