在Windows上关闭NiFi

时间:2016-06-29 00:47:01

标签: windows shutdown apache-nifi

是否有一种简单的编程方式可以在Windows上关闭NiFi? "手册"方式工作,在命令窗口运行并按ctr-c退出,但我试图自动化测试环境。我可以在linux上使用nifi.sh脚本,我在google搜索时看到了关闭bat脚本的引用,但是我使用的是0.6.1而且它不是那个版本。

我已经使用netstat根据API端口号查找PID,然后终止该进程。但似乎总有两个进程,一个将重新启动另一个进程。所以我做了同样的事情,使用Bootstrap端口,用它来查找进程的PID,然后杀死该进程。但这并不总是可靠的。

4 个答案:

答案 0 :(得分:4)

您可以在Windows上停止nifi。为此,您必须选择 run-nifi.bat 文件,并替换 run 以停止在文件中。

然后将文件另存为 nifi-stop.bat

因此 nifi-stop.bat 的内容将如下所示。

@echo off
rem
rem    Licensed to the Apache Software Foundation (ASF) under one or more
rem    contributor license agreements.  See the NOTICE file distributed with
rem    this work for additional information regarding copyright ownership.
rem    The ASF licenses this file to You under the Apache License, Version 2.0
rem    (the "License"); you may not use this file except in compliance with
rem    the License.  You may obtain a copy of the License at
rem
rem       http://www.apache.org/licenses/LICENSE-2.0
rem
rem    Unless required by applicable law or agreed to in writing, software
rem    distributed under the License is distributed on an "AS IS" BASIS,
rem    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem    See the License for the specific language governing permissions and
rem    limitations under the License.
rem

rem Set environment variables

call %~sdp0\nifi-env.bat

rem Use JAVA_HOME if it's set; otherwise, just use java

if "%JAVA_HOME%" == "" goto noJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
set JAVA_EXE=%JAVA_HOME%\bin\java.exe
goto startNifi

:noJavaHome
echo The JAVA_HOME environment variable is not defined correctly.
echo Instead the PATH will be used to find the java executable.
echo.
set JAVA_EXE=java
goto startNifi

:startNifi
pushd "%NIFI_ROOT%"
set LIB_DIR=lib\bootstrap
set CONF_DIR=conf

set BOOTSTRAP_CONF_FILE=%CONF_DIR%\bootstrap.conf
set JAVA_ARGS=-Dorg.apache.nifi.bootstrap.config.log.dir=%NIFI_LOG_DIR% -Dorg.apache.nifi.bootstrap.config.pid.dir=%NIFI_PID_DIR% -Dorg.apache.nifi.bootstrap.config.file=%BOOTSTRAP_CONF_FILE%

SET JAVA_PARAMS=-cp %CONF_DIR%;%LIB_DIR%\* -Xms12m -Xmx24m %JAVA_ARGS% org.apache.nifi.bootstrap.RunNiFi
set BOOTSTRAP_ACTION=stop

cmd.exe /C "%JAVA_EXE%" %JAVA_PARAMS% %BOOTSTRAP_ACTION%

popd

现在,您可以仅运行此文件nifi-stop.bat来停止nifi。

答案 1 :(得分:2)

NiFi支持在Windows上运行,但目前不支持绑定到Windows服务管理。可以肯定,如果您有兴趣通过邮件列表,JIRA参与和讨论或代码提交帮助贡献社区将很乐意合作

答案 2 :(得分:0)

我查了一遍,看起来似乎没有Windows官方支持。不熟悉团队在那里关闭时遇到的确切问题。也许有更简单的方法来支持NiFi进行测试?例如。你正在做的一些集成测试需要一个完整的实例吗?

关于2个过程。你需要先杀死bootstrap,否则它有可能会检测到主进程并重新启动它(取决于你的测试时间)。

答案 3 :(得分:0)

如果你愿意,你可以使用这个可以在windows上的docker上运行的NiFi的dockerized容器 Apache NiFi on Docker Hub