Я новичок в 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 () function;однако это приведет к резервному копированию канала, поскольку он будет запрашивать базу данных по каждому потоковому файлу (что не идеально, если в секунду поступают тысячи потоковых файлов).
Есть ли способ запроса базы данныхпри запуске процессора;не запрашивая базу данных для каждого потока файла?В качестве альтернативы, можно ли будет определить, была ли база данных изменена, и получить данные о модификации?Или даже установить таймер для извлечения базы данных из пользовательского процессора?
Любая помощь очень ценится, спасибо заранее.