Я слушаю изменения в документах в коллекции в Firestore в моей службе, работающей в экземпляре GCE с использованием Java admin SDK.Я использую Executor
с одним потоком в обработчике моментальных снимков запроса, чтобы гарантировать, что полученные мной события обрабатываются последовательно в порядке их поступления.Типичный пример выглядит следующим образом:
public class ListenerClass implements EventListener<QuerySnapshot> {
Map<String, Object> documentMap = new HashMap<String, Object>();
public void onEvent(QuerySnapshot querySnapshot, FirestoreException error) {
for (DocumentChange dc : querySnapshot.getDocumentChanges()) {
switch (dc.getType()) {
case ADDED:
case MODIFIED:
documentMap.put(dc.getDocument().getId(), dc.getDocument().getData());
break;
case REMOVED:
documentMap.remove(dc.getDocument().getId());
break;
}
}
}
}
public class WatchService {
public static void main(String[] args) {
WatchService watchService = new WatchService();
watchService.watch();
}
public void watch() {
//Initialize Firebase and get firestore instance
Executor executor = Executors.newFixedThreadPool(1);
ListenerClass listenerClass = new ListenerClass();
firestore.get("collection_name").addSnapshotListener(executor, listenerClass);
//wait
}
}
Я хотел знать, есть ли возможность в Firestore отправлять события не по порядку.Например, если документ A был обновлен в моменты времени t1 и t2.Могу ли я получить снимок документа A в момент времени t2 до моментального снимка документа в момент времени t1, если t1 и t2 очень близки друг к другу?Я не наблюдал этого в моих тестах до сих пор.Я также не видел упоминаний такого поведения другими людьми.Я просто хотел узнать, возможно ли это, и должен ли я позаботиться об этом в своем коде?