【发布时间】:2019-06-11 01:14:23
【问题描述】:
我是 NiFi 的新手,我正在开发一个自定义处理器来从 psql 数据库视图中提取最新数据。当自定义处理器初始化时,我可以使用下面的代码检索数据库视图。
private void GetData(){
Connection connection = DriverManager.getConnection("jdbc:postgresql://example:5432/example", "user", "pass");
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = statement.executeQuery("SELECT * FROM Example_Table");
while(rs.next()){
//Get data from database
}
connection.close();
}
但是,我正在努力从数据库视图中获取最近的更新。主要问题是何时将新条目添加到数据库中。由于在初始化处理器时会查询数据库,因此自定义处理器不会有新条目。
我尝试在 public void onTrigger() 函数中实现查询;但是,这将导致管道备份,因为它将查询每个流文件的数据库(如果每秒有数千个流文件进入,这并不理想)。
有没有在处理器启动时查询数据库的方法;无需在每个流文件上查询数据库?或者,是否可以检测数据库是否已被修改并在修改时提取数据?或者甚至设置一个计时器来在自定义处理器中拉取数据库?
非常感谢您的任何帮助,在此先感谢您。
【问题讨论】:
标签: java apache-nifi psql