in adapter/runtime/src/main/java/org/apache/rocketmq/eventbridge/adapter/runtime/service/TargetRunnerConfigOnFileObserver.java [83:108]
public void addListen(String pathName, TargetRunnerConfigOnFileObserver pusherConfigOnFileService) {
log.info("Watching task file changing:{}", pathName);
int index = pathName.lastIndexOf("/");
String filePath = pathName.substring(0, index);
String fileName = pathName.substring(index + 1);
service.scheduleAtFixedRate(() -> {
try {
WatchService watchService = FileSystems.getDefault().newWatchService();
Path path = Paths.get(filePath);
path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE,
StandardWatchEventKinds.ENTRY_MODIFY);
WatchKey watchKey;
while (true) {
watchKey = watchService.take();
if (watchKey != null && !watchKey.pollEvents()
.isEmpty()) {
log.info("Watched the file changed events.");
pusherConfigOnFileService.diff();
}
watchKey.reset();
}
} catch (Throwable e) {
log.error("Watch file failed.", e);
}
}, 0, 3, TimeUnit.SECONDS);
}