有这样一条路线。每处理 100 个文件时需要显示一个日志。我不明白如何组织文件的数量。具有不同扩展名的文件,您需要显示这数百个文件的处理量+另一个处理时间......
public void configure() {
from("file:data?noop=true")
.choice()
.when().simple("${file:name} endsWith 'xml'")
.log("Xml файл обрабатывается процессором")
.process(xmlFileProcessor)
.log("Xml файл отправляется в очередь")
.to("activemq:test")
.when().simple("${file:name} endsWith 'txt'")
.log("Txt файл обрабатывается процессором")
.process(txtFileProcessor)
.log("Txt файл отправляется в очередь")
.to("activemq:test")
.endChoice()
.otherwise()
.log("Файл с каким-то расширением обрабатывается процессором")
.process(otherwiseFileProcessor)
.log("Файл с каким-то расширением отправляется в очередь invalide")
.to("activemq:invalid-queue")
.log("Выбрасывается исключение")
.throwException(new BadExpansion("Неверное расширение"))
.when(PredicateBuilder.constant((countXml + countTxt + countOther) % 100 == 0))
.log("Количество файлов 100")
.log("Количество файлов txt " + countTxt + "\n" +
"Количество файлов xml " + countXml + "\n" +
"Количество остальных файлов " + countOther + "\n" +
"Время обработки сообщений " )
.end();
随着时间的流逝,我根本不知道该怎么做,但是通过计数文件有这样一个想法,像这样为每个扩展实现流程类
public class XmlFileProcessor implements Processor {
public static long countXmlFile = 0;
@Override
public void process(Exchange exchange) {
++countXmlFile;
}
}
但它仅在类内递增。
一切都变得容易多了。有必要创建一个处理器类(而不是为每个扩展生成它自己的)并执行包含所有扩展的所有操作。或多或少像这样
}