我已经编写了一个java应用程序,它构建flume配置文件并将它们写入linux设备上的磁盘。然后,应用程序生成flume命令,并尝试通过在以下代码中运行该命令来启动flume代理:
try {
Process p = Runtime.getRuntime().exec(flumeStartCommand.toString());
p.waitFor();
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
如果我接受flume命令并通过终端手动执行它,它就可以正常工作。当java应用程序试图执行flume命令时,什么也没有发生。这是类路径问题吗?
flume命令在这里:/root/flume-flume-1.6/flume-ng-dist/target/apache-flume-1.6.0-snapshot-bin/apache-flume-1.6.0-snapshot-bin/bin/flume-ng-agent--conf conf-conf-file/root/flumeconfs/consumergroup4.conf--name agent\u consumergroup4-dflume.root.logger=info,console-dflume.monitoring.type=http-dflume.monitoring.port=34548
我知道,嵌入式代理是另一种选择,但这些只适用于avro接收器,这对我不是很有用。感谢你的任何想法。干杯,科尔曼
1条答案
按热度按时间ryoqjall1#
对于其他试图弄清楚这一点的人,flume命令需要分解为字符串数组中的参数,如下所示:
然后使用以下代码: