Nifi GetTCP处理器无法接收无CR-LF分隔的TCP数据,求解决方案
解决NiFi GetTCP处理器无法接收无CR-LF分隔的TCP数据问题
问题核心
GetTCP处理器默认以**CR-LF(\r\n)**作为消息边界来拆分数据流并生成FlowFile,你的数据源未包含该分隔符,导致处理器无法识别完整消息,因此不会产出FlowFile。
针对性解决方案
根据你的TCP数据流类型,选择以下方案:
1. 固定长度的消息流
如果每条TCP消息的字节长度固定:
- 打开
GetTCP处理器配置界面 - 将
Delimiter Strategy设置为Fixed Length - 在
Fixed Length参数中填写每条消息的准确字节数 - 保存配置后重启处理器,此时会按固定长度切割数据流,每条生成一个独立FlowFile
2. 自定义分隔符的消息流
如果消息间有特定的非CR-LF分隔符(比如特定字节、字符串):
- 在
GetTCP配置中,将Delimiter Strategy设为Custom Delimiter - 在
Custom Delimiter字段中填写分隔符:- 若为字符串直接输入(如
###END###) - 若为十六进制字节,前缀加
0x(如0x00代表空字节、0x1E代表记录分隔符)
- 若为字符串直接输入(如
- 处理器会根据该分隔符自动拆分消息并生成FlowFile
3. 无明确边界的字节流
如果是持续的无分隔符二进制流:
- 改用
ListenTCP处理器(被动监听TCP连接,适合持续流场景):- 配置
Listening Port为NiFi用于接收的端口 - 处理器会将接收到的字节按默认批次(可通过
Batch Size调整)生成FlowFile
- 配置
- 或继续使用
GetTCP,将Delimiter Strategy设为No Delimiter:- 此模式下处理器会持续读取直到TCP连接关闭,生成一个包含所有接收数据的FlowFile,适合一次性传输的数据流
后续验证
配置完成后,先连接LogAttribute处理器到输出端,查看FlowFile的content属性确认数据正确,再通过PutFile处理器将数据写入文件。
内容的提问来源于stack exchange,提问作者ebeb
相关产品推荐
相关产品推荐

