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
Ở đâ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
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
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