Java Apache NiFi:FlowFileHandlingException在自定义处理器中传输FlowFile时

Java Apache NiFi:FlowFileHandlingException在自定义处理器中传输FlowFile时,java,etl,apache-nifi,Java,Etl,Apache Nifi,在我的定制NiFi处理器中,我从远程API服务接收不同时间范围的数据 我有一个时间范围全局计数器,它随着每次迭代而更新(我使用定时器驱动的调度策略) 当计数器大于最大值时,我只想从请求(session.get())传输流文件,并与成功相关,即不执行其他逻辑: session.transfer(requestFlowFile, SUCCESS); 我无法理解在时间范围收集结束时无法停止或暂停处理器。因此,我尝试使用上述方法作为解决方案 所有迭代都将正常进行,直到计数器大于最大值,并且处理器正在尝

在我的定制NiFi处理器中,我从远程API服务接收不同时间范围的数据

我有一个时间范围全局计数器,它随着每次迭代而更新(我使用定时器驱动的调度策略)

当计数器大于最大值时,我只想从请求(
session.get()
)传输流文件,并与成功相关,即不执行其他逻辑:

session.transfer(requestFlowFile, SUCCESS);
我无法理解在时间范围收集结束时无法停止或暂停处理器。因此,我尝试使用上述方法作为解决方案

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

所以我有一个例外:

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


这里怎么了?或者可能是另一种方法?

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

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

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

或者,如果您需要传入文件来做出决定,您可以获取它,执行一些检查,并使用惩罚
rollback(true)
回滚当前会话,这样您获得的文件将在
惩罚持续时间
处理器参数期间停留在传入队列中,而不会使处理器运行


或者您可以执行
session.get(
从传入队列中仅获取与您的逻辑相匹配的文件(如果是自定义处理器),只需不执行
session.get()
,跳过此执行而不传输任何内容即可

或者,如果您需要传入文件来做出决定,您可以获取它,执行一些检查,并使用惩罚
rollback(true)
回滚当前会话,这样您获得的文件将在
惩罚持续时间
处理器参数期间停留在传入队列中,而不会使处理器运行


或者您可以执行
会话。get(
从传入队列中获取仅与您的逻辑匹配的文件

有人可以帮助我解决以下问题吗