我是Camel的新手,正在努力开发流日志。 我正在尝试流式传输不断变化的日志。因此,一旦我的路线开始,它应该继续流式传输文件并将每条线路分配给处理器。 我尝试了以下方法: 但是我认为这样做可能会更好,只需每次向读者发送一行进行处理。 此外,每次覆盖日志时都要保持路由运行。
from("stream:file?fileName=/usr/dir/filename=logs.txt?options")
.process(new Reader());
另外,我如何能够在处理器中读取该行。我搜索了几个小时,但我找不到一个好的例子。
答案 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);