Java NiFi:发送flowFile@OnflowFile
是否可以在Java NiFi:发送flowFile@OnflowFile,java,apache-nifi,Java,Apache Nifi,是否可以在@OnStopped注释上发送流文件 基本上,我想编写自定义处理器,它可以在处理器停止时在flowFile中发送一个属性 有什么建议吗 我在下面尝试: ProcessSession session; @Override public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException { FlowFile flowFile = se
@OnStopped
注释上发送流文件
基本上,我想编写自定义处理器,它可以在处理器停止时在flowFile中发送一个属性
有什么建议吗
我在下面尝试:
ProcessSession session;
@Override
public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException {
FlowFile flowFile = session.get();
if (flowFile == null) {
flowFile = session.create();
}
flowFile = session.putAttribute(flowFile, "ATTRIBUTE_SIGNAL", "start");
session.transfer(flowFile, success);
}
@OnStopped
public void sendStop() {
FlowFile flowFile = session.get();
flowFile = session.create();
flowFile = session.putAttribute(flowFile, "ATTRIBUTE_SIGNAL", "stop");
session.transfer(flowFile, success);
}
但它在这方面正在失败
2018-04-30 20:44:25,540 ERROR [StandardProcessScheduler Thread-3] org.apache.nifi.util.ReflectionUtils Failed while invoking annotated method 'public void com.kotak.nifi.processors.streaming.SignalGenerator.sendStop()' with arguments '[]'.
java.lang.reflect.InvocationTargetException: null.
像OnScheduled/OnStopped/etc这样的生命周期方法并不是真正用来生成流文件的,这就是为什么您不能访问ProcessSession,只有onTrigger可以 处理器通常被认为是松散耦合的,其中一个处理器并不真正了解/关心其他处理器,它只是从队列中取出一个流文件并对其进行处理
从技术上讲,您可以通过在处理器的成员变量中存储对OnTigger中获得的ProcessSession的引用来实现所需的功能,以便以后在OnStock中使用它。OnScheduled/OnStopped/etc等生命周期方法并不是真正用来生成流文件的,这就是您无法访问流文件的原因ProcessSession,只有OnTigger可以 处理器通常被认为是松散耦合的,其中一个处理器并不真正了解/关心其他处理器,它只是从队列中取出一个流文件并对其进行处理
从技术上讲,您可以通过在处理器的成员变量中存储对OnTigger中获得的ProcessSession的引用来实现所需的功能,以便以后在OnStock中使用它。感谢Bryan的支持!!我刚刚用代码编辑了我的问题。你能给我你的建议吗?在OnTigger中,你必须把“this.session=session”放在某个地方,现在你从来没有给成员变量赋值,所以当你在onStoppedThanks Bryan的repsonse中使用它时,它是空的!!我刚刚用代码编辑了我的问题。您能给我您的建议吗?在OnTigger中,您必须将“this.session=session”放在某个地方,现在您从未为成员变量赋值,因此在onStopped中使用时它是空的