Apache nifi 何时在NiFi处理器中执行session.commit()

Apache nifi 何时在NiFi处理器中执行session.commit(),apache-nifi,Apache Nifi,我正在实施一个NiFi处理器,需要对最佳实践进行几点澄清: session.getProvenanceReporter().modify(…)-我们是否应该在每个session.transfer()之后立即发出事件 session.commit()-文档说明,在对流文件执行操作后,可以调用commit或rollback 开发者指南: 问题是,不显式调用这些方法会损失什么 1)是,通常在传输流文件后发出源事件 2) 这取决于您是在扩展AbstractProcessor还是AbstractSessi

我正在实施一个NiFi处理器,需要对最佳实践进行几点澄清:

  • session.getProvenanceReporter().modify(…)-我们是否应该在每个session.transfer()之后立即发出事件
  • session.commit()-文档说明,在对流文件执行操作后,可以调用commit或rollback 开发者指南:

    问题是,不显式调用这些方法会损失什么

    1)是,通常在传输流文件后发出源事件

    2) 这取决于您是在扩展AbstractProcessor还是AbstractSessionFactoryProcessor。AbstractProcessor将为您调用commit或rollback,所以您不需要这样做,AbstractSessionFactoryProcessor要求您适当地调用它们

    如果您正在扩展AbstractSessionFactoryProcessor,并且从不调用commit,那么最终该会话将被垃圾收集并调用回滚,并且该会话执行的所有操作都将回滚

    还有一个注解@SupportsBatching,可以放在处理器上。当出现此注释时,UI会在处理器的“调度”选项卡上显示一个滑块,指示可以在幕后批处理多少毫秒的框架操作(如commit()),以提高吞吐量。如果延迟更重要,那么将幻灯片保留在0毫秒是合适的,但这里的关键是用户在构建流和配置处理器时可以决定这一点