虽然生产环境下 flume 一般都在linux中运行,但是总会有些特殊情况要在 windows server 中使用 flume。但是楼主在 google、bing、baidu找了一通也没有比较好的方案,于是只能自已造轮子了。
思路:
既然 flume 是 java 项目,那么最终还是通过 java.exe 运行,那么只要找到这条命令,就有办法注册成服务。
分析:
先看 bin\flume-ng.cmd 文件,就一条命令:
powershell.exe -NoProfile -InputFormat none -ExecutionPolicy unrestricted -File %~dp0flume-ng.ps1 %*
可以看到 flume 是使用 window 的 powershell.exe 命令行运行的,但是经过测试,注册成服务后不能启动 powershell.exe 进程,个人感觉是权限问题,从事件查询器中可以看到 403、600 等错误代码,没有深究,回到使用 java.exe 运行的思路。
先写好配置文件与运行脚本,保证可以在命令行中正常启动flume进程。
flume 的启动脚本主要是在 bin\flume-ng.ps1 文件中,可以在文件中找到下面的函数:
function runFlume($javaClassPath, $javaLibraryPath, $javaOptions, $class, $javaProcessArgumentList) {
[string]$javaPath = GetJavaPath
[string]$fullJavaCommand = "-classpath