使用camel流式传输文件

时间:2017-10-02 15:42:25

标签: java apache-camel

我是Camel的新手,正在努力开发流日志。 我正在尝试流式传输不断变化的日志。因此,一旦我的路线开始,它应该继续流式传输文件并将每条线路分配给处理器。 我尝试了以下方法: 但是我认为这样做可能会更好,只需每次向读者发送一行进行处理。 此外,每次覆盖日志时都要保持路由运行。

from("stream:file?fileName=/usr/dir/filename=logs.txt?options")
               .process(new Reader());

另外,我如何能够在处理器中读取该行。我搜索了几个小时,但我找不到一个好的例子。

1 个答案:

答案 0 :(得分:1)

Camel Stream组件的documentation建议如下:

from("stream:file?fileName=/usr/dir/logs.txt&scanStream=true&scanStreamDelay=1000")
    .process(new Reader());

另外,您使用fileName选项两次,可能是拼写错误?

如果您想在每一行上进行一些自定义处理,您可以创建自己的处理器:

public class MyProcessor implements Processor {
    @Override
    public void process(Exchange exchange) {
        String body = exchange.getIn().getBody(String.class);
        //Perform some logic and put it back in the exchange
        exchange.getIn().setBody(body);
    }
}

然后在你的骆驼环境中:

Processor myProcessor = new MyProcessor();
...
from("file:///dir").process(myProcessor);