首先我们需要搭建一个nifi的环境。
这个demo可以简单的理解为,使用nifi创建一个web服务,编写一个简单的web页面,使用js的websocket向某个端口发送信息,再由nifi监控这个端口,将监听到的数据保存,可以使用httpd的方式查看。
首先我们需要安装一个httpd
yum install -y httpd
systemctl start httpd
systemctl enable httpd
mkdir /var/www/html/logs
然后我们访问cdh02:58080/nifi进入nifi的web页面。
选择顶端的Processor(处理器)拖动到面板中,类型选择handlehttprequest,
以此方法依次添加表中内容,并摆放到下图的位置,鼠标放到Processor中,会有一个箭头,拖动箭头到另一个Processor实现二者的链接。
Processor | 链接类型 | 链接目标 |
---|---|---|
handlehttprequest | success | ExecuteStreamCommand |
ExecuteStreamCommand | output stream | HandleHttpResponse |
original | ModifyBytes | |
HandleHttpResponse | 无 | 无 |
ModifyBytes | 无 | 无 |
ListenWebSocket | 全选 | ModifyBytes |
text message | PutWebSocket | |
PutWebSocket | success | PutFile |
PutFile | 无 | 无 |
handlehttprequest设置
双击handlehttprequest打开设置,SETTINGS标签中取消勾选success
选择PROPERTIS标签,如图所示。
Listening Port | 6688 |
---|---|
Hostname | cdh02 |
HTTP Context Map | create new service |
加粗部分是必填项,注意这里新建了standardHttpContextMap之后还需要点击右侧的箭头进行激活,激活页面如图。
找到你刚才新建的Map,点击小闪电进行激活,Enable。
退出后发现之前的感叹号变成方块就是配置成功。
ExecuteStreamCommand设置
SETTINGS标签中勾选nonzero status。
PROPERTIS标签,注意这里的CommandPath目前是空的,一会儿我们要在这个目录下创建命令脚本
Command Path | /root/Archive/server.sh |
---|---|
Ignore STDIN | false |
HandleHttpResponse设置
SETTINGS标签中勾选success,failure
PROPERTIS中修改内容,这里的ContextMap就是刚刚创建的Map。
HTTP Status Code | 200 |
---|---|
HTTP Context Map | StandardHttpContextMap |
ModifyBytes设置
SETTINGS标签中勾选success
PROPERTIS按照默认配置即可
ListenWebSocket设置
PROPERTIS标签中修改设置,这里需要重新创建一个jettyWebSocketServer
WebSocket Server ControllerService | create new service |
---|---|
Server URL Path | /echo |
仍然按照之前的方法进行激活,并且需要设置这个监听的端口号为9998。
PutWebSocket设置
SETTINGS标签中勾选failure
PROPERTI