2012-03-01 10 views
7

Estoy experimentando para conseguir que camello realice algunas operaciones de archivos y pasarlas a través del intermediario activeMQ, este proyecto se lo quitó a un tipo que abandonó recientemente.CÓMO: Archivos de coincidencias de Apache Camel, Regex

lo que he conseguido hasta ahora:

<route id="SVLFTPCOPY"> 
    <from uri="sftp://*****:*******@********/srv/test/?fileName=*2280.xls&amp;noop=true&amp;idempotent=false"/> 
    <to uri="file:/srv/data/test/destination/"/> 
    <to uri="activemq:queue:svl.ftp.copy"/> 
    </route> 

funciona hasta el punto en que se ejecuta la ruta sin lanzar ningún error, pero aún no funciona copiar el archivo en el archivo local.

¿Alguna idea? .

Respuesta

18

Sí es necesario utilizar la opción de filtro de inclusión/exclusión/si desea filtrar los archivos basándose en patrones. La opción fileName es para un archivo único.

Por lo tanto, en su caso, elimine la opción fileName y reemplácela por include=.*2280.xsl. Tenga en cuenta que la inclusión se basa en expresiones regulares de Java, por lo que usamos dot star para indicar comodín. Más detalles aquí: http://camel.apache.org/file2. El componente ftp hereda el 99% de las opciones del componente de archivo, por eso me refiero a la página wiki del archivo.

+1

Sería genial actualizar la página de Camel WIKI con un simple java regex 'incluir' y 'excluir' ejemplos. –

+0

eso es genial. esta respuesta me ahorró tiempo: la expresión regex en el include debe tener un punto antes de la estrella, por lo que se ve así: & include =. * 2280.xsl. De lo contrario, no funcionará – kachanov

3

Utilice la opción include que utiliza Java expresión regular:

include=.*2280\\.xsl 

Por favor, recuerda la \\ antes del punto .

Como alternativa, utilice antInclude:

antInclude=*2280.xsl 
0

En la puesta en práctica de nombre que empareja, el código siguiente se utiliza:

if (ObjectHelper.isNotEmpty(endpoint.getInclude())) { 
    if (!name.matches(endpoint.getInclude())) { 
     return false; 
    } 
} 

Para que pueda probar qué expresión regular debe usar. En tu caso, creo que .*2280\\.xsl es lo que deberías usar.

Cuestiones relacionadas