我想知道转移的文件数量,或者您可以在每个文件从消费者转移到生产者之后说出确认或通知。
就像简单的例子
from("file:in").
.to("file:out");
我使用了.onCompetion()并尝试了处理器,但没有为我工作,因为我是新手。代码示例将非常有用。
答案 0 :(得分:5)
您可以使用CamelBatchSize
兑换财产。此属性返回此批次中轮询的Exchange总数:
from("file:in").
.log("CamelBatchSize (header) = ${header.CamelBatchSize}")
.log("CamelBatchSize (property) = ${property.CamelBatchSize}")
.to("file:out");
所有Camel批量消费者都支持 CamelBatchSize
,请参阅here。支持的其他属性包括:
CamelBatchIndex
:批次的当前索引。从0开始。CamelBatchComplete
:一个布尔值,表示批次中的最后一个Exchange。仅适用于最后一个条目。 答案 1 :(得分:0)
这是使用处理器的一个非常简单的例子:
from("file:in").to("file:out")
.process(new Processor() {
private int count = 0;
public void process(Exchange exchange)
{
count++;
System.out.println("Count: " + count);
}
});
如果您只想查看已写入文件的确认,可以使用日志语句:
from("file:in").to("file:out").log(LoggingLevel.INFO, "Message transferred!");
答案 2 :(得分:0)
您可以使用在处理器或其他内容中递增的(静态)变量。
int counter=0;
from("file:in")
.to("file:out")
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
counter++;
//notification or something else
}
});