2
respostas

Formas de parar a routa do Camel

    context.start();
    Thread.sleep(20000);
    context.stop();

Existe outra forma de esperar o Camel terminar de executar? Por exemplo,se houver mais arquivos ou os arquivos existentes forem muito grandes,talvez usar Thread.sleep(tempo) não seja a melhor escolha. Podemos usar um tempo que pode ser suficiente para executar a integração,como também pode acontecer de o tempo não ser suficiente.

Existe outra alternativa para o Thread.sleep? Se,por exemplo, quiser parar o camel quando todos os arquivos forem lidos e jogados na outra pasta,como deveria fazer?

Obrigado!

2 respostas

Oi Lucas, parece que ele tem uns métodos de callback para isso.. achei um pouco aqui na documentação => http://camel.apache.org/oncompletion.html

Não sou um especialista, tomara que ajude. Qualquer coisa fala aqui de novo que tentamos ajudar mais.

Ola Alberto, muito obrigado! Pelo que eu entendi, esse método serve para quando utilizamos as rotas assíncronas e queremos que outreo rota inicie quando a rota atual terminar.

Eu olhei a documentação do CamelContext e parece que não é possível outra forma além da Thread.sleep, pois o método start não é bloqueável ( https://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/CamelContext.html#start() ).

Ele vai disparar as threads: uma executa as rotas e outra segue o fluxo do código. Sem o thread sleep, e assim estiver:

 context.start()
 context.stop()

Ele vai iniciar e parar