2011-08-15 70 views
5

Actualmente trato de profundizar en Apache Camel. Como sabe, hay al menos dos formas de describir las rutas: la DSL de Java y la configuración de XML.¿Cuáles son las ventajas y desventajas de definir rutas Camel en Spring xml?

Los desarrolladores de Camel recomiendan utilizar la DSL de Java porque tiene la ventaja de que se integra mejor en el IDE. Otra ventaja es que puede enriquecer el DSL de Java con su propio código sin escribir estructuras de clase complejas. Esto parece necesario si se toma una configuración XML.

¿Cuáles cree que son las ventajas y desventajas de las rutas definidas en un archivo xml? Cuándo usar archivos xml para la definición de rutas y cuándo usar Java DSL?

Respuesta

6

Depende de sus requisitos un poco, pero en casi todos los casos, yo prefiero el de Java DSL por las siguientes razones:

  • menos zapping entre los archivos XML más eficiente y flexible de XML/Java
  • más fácil de visualizar, gestionar, mantener, debug, test (a través de mock, etc.)
  • soporte para inline Processors
  • una mejor integración con el IDE (finalización de código y validación)
  • más limpio, más fácil de seguir examples
5

Si usa la DSL de Java, puede aprovechar las herramientas de refactorización de su IDE y compilar verificaciones de tiempo.

Por otro lado, si usa archivos xml, puede externalizar todo el enrutamiento de camello y reencaminar cosas sin volver a implementar la aplicación.

2

Si de empezar a usar la primavera lo más probable es llegar a un punto en el que hay que implementar un procesador o alguna otra cosa . Necesitará un código personalizado en algún momento. Después de esto tienes una mezcla de java y xml en tu código: mantenimiento de horror.

al lado de este Java es:

  • tipo de seguro
  • compilado

para obtener el máximo provecho de ella yo también sugeriría para reducir al mínimo la configuración de puntos finales con cuerdas. Así que en lugar de crear y configurar los puntos finales de esta manera:

from("file:/someFolder?delete=true") 

i sugerir no crear/configurar el punto final por separado:

Endpoint fileEndpoint= context.getEndpoint("file:" + folder.getPath(), FileEndpoint.class); 
fileEndpoint.setDelete(true); 

Esto es menos propenso a errores que volverse locos cuerdas.

Cuestiones relacionadas