Die Anwendung verwendet einen MinIO-Server (S3 Object Storage), auf dem JSON-Dateien gespeichert sind.
Diese Dateien müssen in einer Map in den Speicher geladen werden< String, Map>-Format vor dem Start der Anwendung. Dies wird derzeit mithilfe der @PostConstruct-Annotation implementiert.
Das Projekt erfordert nun die Einführung eines Aktualisierungsmechanismus für den Speicher. In Zukunft muss die Anwendung diese In-Memory-Daten in regelmäßigen Abständen (z. B. alle 5 Minuten) aktualisieren, um Folgendes widerzuspiegeln:
Änderungen an vorhandenen Dateien.
Hinzufügen neuer Dateien im MinIO-Bucket.
Die Aktualisierung sollte effizient sein und keinen Neustart der gesamten Spring-Anwendung erfordern.
Ich habe den anfänglichen Dateilademechanismus mithilfe der @PostConstruct-Annotation implementiert, die die Dateien währenddessen erfolgreich in den Speicher lädt Anwendung Startup.
Für den Aktualisierungsmechanismus bestand meine ursprüngliche Idee darin, die @Scheduled-Annotation von Spring zu verwenden, um den MinIO-Bucket regelmäßig alle 5 Minuten zu überprüfen.
Die Aufgabe würde:
- Erkennen Sie Änderungen in den vorhandenen Dateien oder identifizieren Sie neue Dateien.
- Aktualisieren Sie die im Speicher befindlichen Map mit den geänderten oder neuen Daten.
- Ist meine Idee, @Scheduled für diesen Anwendungsfall effizient zu verwenden?
- Gibt es bessere Ansätze zur Erkennung? Dateiänderungen oder Ergänzungen im MinIO-Bucket, ohne alle Dateien in jedem Intervall zu scannen?
- Wie kann ich den Leistungsaufwand minimieren und gleichzeitig sicherstellen, dass der Speicher immer mit den neuesten Daten aktualisiert wird?