Nach the docs auszulösen, extern eine Ansicht Update Auslösung sollte wie folgt funktionieren:Wie ein PersistentView Update extern
view ! Update(await = true|false)
Senden und Warten scheinen allerdings nicht zu arbeiten:
view ! Update(await = true) // repeat x times does not help either
Thread.sleep(2000)
val getState = view ? GetState
Der Ansichtszustand wird nicht aktualisiert.
fragen funktioniert auch nicht - es gibt keine Antwort auf Update
und die Await
mal aus:
val getUpdate = v ? Update(await = true)
val updated = Await.result(getUpdate, 10 seconds)
val getState = view ? GetState
IIUC, die Verarbeitung von Update
Nachrichten von PersistentView#State#stateReceive
durchgeführt wird. Der Empfang wird nicht protokolliert und ich weiß nicht, wie ich den Empfang und die Verarbeitung verifizieren kann. Update
msgs erreichen nicht die receive
in meiner PersistentView
übersteuert.
was funktioniert in einem .conf
ein sehr kurzes Aktualisierungsintervall einstellen:
persistence.view.auto-update-interval = 100ms
Das Debug-Protokoll zeigt, dass das Journal die Ansicht aktualisiert:
... a.p.i.e.InMemoryJournalStorage akka://entityViewSpec/user/JournalStorage - received handled message GetJournalEntriesExceptDeleted(ea-ZleUNl1a3N,1,1,9223372036854775807) from Actor[akka://entityViewSpec/temp/$o]
ich das nicht sehen Protokolleintrag beim Senden Update
und warten
nach einem kurzen Schlaf, ist die Aussicht aktualisiert, wie erwartet.
Thread.sleep(200)
val getState = view ? GetState
So wie auslösen ich eine Ansicht Update extern ohne automatische Aktualisierungen laufen die ganze Zeit?
Akka 2.4.8
Danke
EDIT
Mein Fehler war ganz einfach - nicht die anfängliche msg genug Zeit, um beharrte zu werden - der Update
Anruf an ein empfangen wurde Zeitpunkt, an dem die relevanten Ereignisse noch nicht im Laden verfügbar waren. Die Autoupdate-Einstellung hat 100 ms gewartet, bevor sie aktualisiert wurde. Auf meiner lokalen Maschine mit In-mem-Persistenz muss ich etwa 50ms vor dem Versand der Update
erlauben.Dann geben Sie das System einige Zeit zu holen und die Ereignisse gelten:
nicht funktioniert:
actor ! MyCommand
view ! Update(await = true)
Thread.sleep(500)
val getState = view ? GetState
Arbeits:
actor ! MyCommand
Thread.sleep(50)
view ! Update(await = true)
Thread.sleep(500)
val getState = view ? GetState
Danke, kpbochenek. Dein Test hat mir geholfen, mein Missverständnis zu erkennen. Bitte beachten Sie die Änderung – kostja