2013-03-21 17 views
5

Tôi muốn thăm dò ý kiến ​​10 tệp tại một thời điểm tại các khoảng thời gian nhất định từ một thư mục cụ thể. Nếu có tồn tại 250 tệp trong thư mục đó, tệp Mule gửi đến phải lấy 10 tệp trong số 250 tệp và xử lý chúng sau đó lại 10 tệp v.v. Tôi có giá trị tham số vòng lặp "10000"Mule File Cấu hình bỏ phiếu trong nước

Tôi đã cố gắng áp dụng maxThreadsActive như thế này nhưng nó không làm việc

<file:connector> 
<receiver-thread-profile maxThreadsActive=10/> 
</file:connector> 

Trả lời

12

Mule cho phép bạn ghi đè các phần nhất định của việc triển khai phương tiện. Trong trường hợp này, bạn nên ghi đè org.mule.transport.file.FileMessageReceiver, cụ thể là phương thức listFiles().

public class MyFileMessageReceiver extends FileMessageReceiver 
{ 
    private static final MAX_FILES = 10; 

    @Override 
    List<File> listFiles() throws MuleException 
    { 
     try 
     { 
      List<File> files = new ArrayList<File>(); 
      this.basicListFiles(readDirectory, files); 

      if(files.isEmpty()) 
       return NO_FILES; 

      if(files.size() > MAX_FILES) 
       return files.subList(0, MAX_FILES); 
      else 
       return files; 
     } 
     catch (Exception e) 
     { 
      throw new DefaultMuleException(FileMessages.errorWhileListingFiles(), e); 
     } 
    } 
} 

Sau đó, tạo một kết nối mà sẽ sử dụng máy thu thông điệp của bạn

<file:connector name="inboundFileConnector"> 
    <service-overrides messageReceiver="org.mule.transport.file.MyFileMessageReceiver"/> 
</file:connector> 

Cuối cùng, bạn có thể sử dụng kết nối này với bất kỳ thiết bị đầu cuối trong nước tập tin trong cấu hình của bạn. Bạn chỉ cần xác định tần suất bỏ phiếu và bạn đã hoàn tất.

HTH

+0

Ở đây chúng tôi không thể ghi đè phương thức listFiles(), vì phương pháp có mặc định là Trình chỉ định truy cập. Vậy có cách nào khác để làm những điều đó không? Cảm ơn – user2181841

+0

Một giải pháp-không quá thanh lịch là để mở rộng 'AbstractPollingMessageReceiver' với mã của' FileMessageReceiver'. Đối với phương thức 'lisfFiles()', sử dụng mã tùy chỉnh trong câu trả lời. Tôi sẽ được cập nhật các câu trả lời của tôi để sửa lỗi này – Daniel

+0

hey tôi giải quyết nó bằng cách ghi đè cuộc thăm dò ý kiến ​​() của người nhận tin nhắn tập tin n bây giờ đang làm việc tốt ... Cảm ơn bạn rất nhiều vì đã giúp ur thời gian .... – user2181841