我正在实施一个NiFi处理器,并就最佳实践做了几点澄清:
开发者指南:https://nifi.apache.org/docs/nifi-docs/html/developer-guide.html#process_session
问题是,如果不明确调用这些方法,我会失去什么?
答案 0 :(得分:3)
1)是的,通常在传输流文件后会发出来源事件。
2)这取决于您是在扩展AbstractProcessor还是AbstractSessionFactoryProcessor。 AbstractProcessor将为您调用commit或rollback,因此您不需要,AbstractSessionFactoryProcessor要求您适当地调用它们。
如果您正在扩展AbstractSessionFactoryProcessor并且从不调用commit,那么最终该会话将被垃圾收集并且将调用回滚,并且将回滚该会话执行的所有操作。
还有一个注释@SupportsBatching可以放在处理器上。当存在此注释时,UI会在处理器的调度选项卡上显示一个滑块,指示可以在幕后将多少毫秒的框架操作(如commit())一起批处理以提高吞吐量。如果延迟更重要,那么将幻灯片保留在0毫秒是合适的,但关键是用户在构建流程和配置处理器时决定这一点。