Pregunta

Quiero ejecutar un simple ejemplo Apache Camel que copia archivos de un directorio a otro:

CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {

  public void configure () throws Exception {
    from("file://c:/fromdir/").to("file://c:/todir/");
  } 
});
context.start();

Si me quedo este ejemplo usando Apache Camel 2.0.0 el programa sale inmediatamente después de context.start(); y no hace nada. Si añado Thread.sleep(30000); después de la partida de la CamelContext, los hilos de fondo hacen su trabajo y los archivos se copian desde la fuente hasta el directorio de destino durante 30 segundos.

Sin embargo, si corro el mismo código usando Apache Camel 1.6.2 Método de los bloques start() de forma automática y no necesito para poner el hilo principal a dormir con el fin de obtener los archivos copiados. No he encontrado un indicio de que este comportamiento cambió de camello 1.xa 2.x. Es este realmente el comportamiento previsto? ¿Es posible hacer que el método start () a bloquear la ejecución en camello 2.0.0?

Gracias

¿Fue útil?

Solución

Sí inicio de llamada () en el contexto de camello nunca debe bloquear el hilo. Y este comportamiento correcto de camello 2.0.

Puede utilizar la clase de MainSupport org.apache.camel.util como punto de partida para haber bloqueado hasta que se pulse Ctrl + C o llame al paro () CamelContext.

Ver por ejemplo principal en camello-resorte que se extiende MainSupport y es capaz de cargar Camel desde un archivo XML primavera.

Otros consejos

O puede agregar

Thread.currentThread().join();

después context.start ();

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top