是否有一种简单的编程方式可以在Windows上关闭NiFi? "手册"方式工作,在命令窗口运行并按ctr-c退出,但我试图自动化测试环境。我可以在linux上使用nifi.sh脚本,我在google搜索时看到了关闭bat脚本的引用,但是我使用的是0.6.1而且它不是那个版本。
我已经使用netstat根据API端口号查找PID,然后终止该进程。但似乎总有两个进程,一个将重新启动另一个进程。所以我做了同样的事情,使用Bootstrap端口,用它来查找进程的PID,然后杀死该进程。但这并不总是可靠的。
答案 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