Camel计数已路由或使用的文件数

时间:2014-11-17 12:19:11

标签: java apache-camel

我想知道转移的文件数量,或者您可以在每个文件从消费者转移到生产者之后说出确认或通知。

就像简单的例子

from("file:in").
   .to("file:out");

我使用了.onCompetion()并尝试了处理器,但没有为我工作,因为我是新手。代码示例将非常有用。

3 个答案:

答案 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
            }
   });