【问题标题】:Apache NiFi: FlowFileHandlingException when transfer FlowFile in custom processorApache NiFi:在自定义处理器中传输 FlowFile 时出现 FlowFileHandlingException
【发布时间】:2017-05-25 20:20:24
【问题描述】:

我在我的自定义 NiFi 处理器中从远程 API 服务中提取不同时间范围的数据。

我有时间范围全局计数器,每次迭代都会更新(我使用的是计时器驱动的调度策略)。

当计数器大于最大值时,我只想从请求 (session.get()) 传输 FlowFile 与 SUCCESS 关系,即不执行额外的逻辑:

session.transfer(requestFlowFile, SUCCESS);

我不明白当时间范围收集结束时我无法停止或暂停处理器。所以我尝试使用上述方法作为解决方案。

所有迭代都正常进行,直到计数器大于最大值并且处理器尝试从请求中传输 FlowFile (session.get())

所以我有这个例外:

由于 org.apache.nifi.processor.exception.FlowFileHandlingException 无法处理会话:StandardFlowFileRecord[uuid=459e615b-0ff5-424f-aac7-f95d364cdc13,claim=,offset=0,name=99628180019265,size=0]在这个会话中未知

这里有什么问题?或者可能是另一种方法?

【问题讨论】:

标签: java etl apache-nifi


【解决方案1】:

该错误意味着传递给 session.transfer() 的流文件来自不同的会话。您只能在调用 get() 的同一会话中调用 transfer()。

【讨论】:

    【解决方案2】:

    如果它是自定义处理器 - 只需不要执行 session.get() 并跳过此执行而不传输任何内容。

    或者,如果您需要传入文件来做出决定,您可以获取它,进行一些检查,并使用惩罚 rollback(true) 回滚当前会话,因此您获取的文件将在 @987654324 期间保留在传入队列中@处理器参数,无需占用处理器即可运行。

    或者您可以通过session.get(FlowFileFilter) 仅从传入队列中获取符合您的逻辑的文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多