Я знаю, что этот вопрос довольно старый, но сейчас я сталкиваюсь с той же проблемой в 2015 году - и эта ветка не предлагает мне решения.
Я придумал пользовательский компонент процессора, имеющий CountDownLatch, который я отсчитывал после начальной загрузки приложения. Поэтому сообщения будут бездействовать до тех пор, пока приложение не запустится полностью и оно не заработает для меня.
/**
* bootstrap latch processor
*/
@Log4j
class BootstrapLatchProcessor implements Processor {
private final CountDownLatch latch = new CountDownLatch(1)
@Override
void process(Exchange exchange) throws Exception {
if(latch.count > 0){
log.info "waiting for bootstrapped @ ${exchange.fromEndpoint}"
latch.await()
}
exchange.out = exchange.in
}
/**
* mark the application as bootstrapped
*/
public void setBootstrapped(){
latch.countDown()
}
}
Затем используйте его как компонент в вашем приложении и вызовите метод setBootstrapped в вашем Bootstrap.groovy
Затем в вашем RouteBuilder вы помещаете процессор между конечной точкой и пунктом назначения для всех маршрутов, на которые вы ожидаете приходить сообщения до запуска приложения:
from("activemq:a.in ").processRef('bootstrapProcessor').to("bean:handlerService?method=handle")