ActivePivot 5.0 では、データストアに挿入するデータを含むファイルを監視しています。この単一のエントリ ポイントを持ち、ファイルを変更するたびに新しいデータが更新または挿入されるようにしたいと考えています。
これは、ファイル トピックの私の構成です。
@Bean
public CSVSource csvSource() {
// Define source
final CSVSource source = new CSVSource();
final List<String> productFileColumns = Arrays.toList("a", "b", "c");
final ICSVTopic myTopic = source.createTopic("myTopic", "path/to/my/file");
myTopic.getParserConfiguration().setSeparator(";");
source.addTopic(myTopic);
// some configuration of the csv source (threads, ...)
...
// Define channel factory
final CSVMessageChannelFactory channelFactory = new CSVMessageChannelFactory(csvSource, datastore);
...
// Listen some topics
final Map<String, String> topicsToListen = new HashMap<>();
topicsToListen.put("myTopic_Store", "myTopic");
final Listen<IFileInfo, ILineReader> listener = new Listen<>(channelFactory, topicsToListen);
listener.listen(csvSource);
}
そして、ファイルを更新する私のコード:
public void updateFile() {
final Path path = Paths.get("path/to/my/file");
// Write and truncate
Files.write(path, "1;2;3".getBytes(), StandardOpenOption.TRUNCATE_EXISTING);
// Add another data
Files.write(path, "4;5;6".getBytes(), StandardOpenOption.APPEND);
// Add another data
Files.write(path, "7;8;9".getBytes(), StandardOpenOption.APPEND);
}
私の問題は、#updateFile への呼び出しごとに 1 回だけ処理されることを期待しているのに、CSV ソースによってファイルが複数回処理されていることです。
注: 今のところ、手動や別の言語ではなく、Java を使用してファイルを更新したいと考えています。
助けてくれてありがとう。