在 Windows 上关闭 NiFi

Shutdown NiFi on Windows

是否有一种简单的编程方式可以在 windows 上关闭 NiFi? "manual" 方法有效,在命令 window 中 运行 并按 ctr-c 退出,但我正在尝试自动化测试环境。我可以在 linux 上使用 nifi.sh 脚本,我在谷歌搜索时看到了对关闭 bat 脚本的引用,但我使用的是 0.6.1,但它不在那个版本中。

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

我查了一下,好像Windows 没有官方支持。不过,不熟悉团队在那里关闭时遇到的确切问题。也许有更简单的方法来支持 NiFi 进行测试?例如。您正在进行的某些集成测试是否需要完整实例?

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

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

如果您愿意,可以使用这个 docker 化的 NiFi 容器,它应该 运行 在 docker 在 windows Apache NiFi on Docker Hub

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

然后将文件另存为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 只是 运行ning 这个文件 nifi-stop.bat.