2012-03-01 30 views
7

im thử nghiệm trong việc lạc đà để thực hiện một số thao tác tệp và chuyển chúng qua môi giới activeMQ, tôi đã thực hiện dự án này từ một người đã bỏ thuốc lá gần đây.CÁCH: Apache Camel, các tệp đối sánh Regex

gì ive có cho đến nay:

<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> 

nó hoạt động tới điểm mà nó chạy theo tuyến đường mà không ném bất kỳ lỗi nào, nhưng vẫn doesnt sao chép các tập tin vào tập tin địa phương.

Bất kỳ ý tưởng nào? .

Trả lời

18

Yeah bạn cần phải sử dụng các tùy chọn bao gồm/loại trừ/lọc nếu bạn muốn lọc ra các tác phẩm dựa trên các mẫu. Tùy chọn tên tệp là dành cho tệp duy nhất.

Vì vậy, trong trường hợp của bạn, hãy xóa tùy chọn Tên tệp và thay thế bằng include=.*2280.xsl. Lưu ý rằng sự bao gồm dựa trên các biểu thức chính quy Java, vì vậy chúng tôi sử dụng chấm sao để biểu thị ký tự đại diện. Chi tiết tại đây: http://camel.apache.org/file2. Thành phần ftp thừa kế 99% các tùy chọn của thành phần tệp, vì vậy đó là lý do tại sao tôi tham khảo trang wiki của tệp.

+1

Thật tuyệt vời khi cập nhật trang Camel WIKI bằng một ví dụ về regex 'bao gồm' và 'loại trừ' java đơn giản. –

+0

thật tuyệt vời. câu trả lời này đã lưu thời gian của tôi: biểu thức regex trong bao gồm phải có dấu chấm trước dấu sao sao cho nó trông giống như: & include =. * 2280.xsl. Nếu không nó sẽ không hoạt động – kachanov

3

Sử dụng tùy chọn include sử dụng Java biểu thức chính quy:

include=.*2280\\.xsl 

Xin vui lòng, nhớ những \\ trước khi chấm .

Ngoài ra, sử dụng antInclude:

antInclude=*2280.xsl 
0

Trong việc thực hiện tên phù hợp, mã sau đây được sử dụng:

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

Vì vậy, bạn có thể kiểm tra cụm từ thông dụng nào bạn nên sử dụng. Trong trường hợp của bạn, tôi nghĩ rằng .*2280\\.xsl là những gì bạn nên sử dụng.

Các vấn đề liên quan