Управление пуском и остановкой верблюжьих маршрутов - PullRequest
0 голосов
/ 31 января 2012

Я пытаюсь создать вид опроса службы очереди activemq, используя верблюжьи маршруты.

Я использую плагины routing и routing-jsm для grails.

У меня есть конфигурация маршрутаустановить как это.

class QueueRoute {
def configure = {
    from("activemq:daemon").routeId("daemonRoute")
    .noAutoStartup()
    .shutdownRunningTask(ShutdownRunningTask.CompleteCurrentTaskOnly)
    .to('bean:daemonCamelService?method=receive')
    .end()
}

}

, и я в основном пытаюсь сделать .suspendRoute ("daemonRoute") и .resumeRoute ("daemonRoute") с некоторым промежутком времени между ними.Хотя после выдачи suspendRoute маршрут не останавливается.

Кто-нибудь пытался это сделать?

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

если вы просто пытаетесь периодически обрабатывать все сообщения в очереди, тогда другой вариант (вместо запуска и остановки маршрута) - использовать таймер и опросный потребительский бин , чтобы получить всесообщения в очереди ...

from("timer://processQueueTimer?fixedRate=true&period=30000")
    .to("bean:myBean?method=poll");

public class MyBean {

  public void poll() {
    // loop to empty queue
    while (true) {
        // receive the message from the queue, wait at most 3 sec
        Object msg = consumer.receiveBody("activemq:queue:daemon", 3000);
        if (msg == null) {
            // no more messages in queue
            break;
        }

        // send it to the next endpoint
        producer.sendBody("bean:daemonCamelService?method=receive", msg);
    }
  }
}
1 голос
/ 31 января 2012

См. Этот раздел часто задаваемых вопросов, как остановить / приостановить маршрут от маршрута http://camel.apache.org/how-can-i-stop-a-route-from-a-route.html

Альтернативой является использование политики маршрута http://camel.apache.org/routepolicy

Например, как мы делаем с регулированиемПолитика маршрутов, которая предоставляется из коробки, посмотрите, как она реализована, вы можете сделать то же самое для своего маршрута.

...