0

docsによると、ビューの更新を外部からトリガーすることは、次のように機能するはずです。

view ! Update(await = true|false)

ただし、送信と待機は機能しないようです:

view ! Update(await = true) // repeat x times does not help either
Thread.sleep(2000)
val getState = view ? GetState

ビューステートは更新されていません。

尋ねても機能しません-答えがなくUpdateAwaitタイムアウトします:

val getUpdate = v ? Update(await = true)
val updated = Await.result(getUpdate, 10 seconds)
val getState = view ? GetState

IIUC、Updateメッセージの処理は によって実行されPersistentView#State#stateReceiveます。その受信はログに記録されておらず、受信と処理を確認する方法がわかりません。Updateメッセージreceiveは、私のPersistentView.

機能するのは、次のように非常に短い更新間隔を設定すること.confです:

persistence.view.auto-update-interval = 100ms

デバッグ ログは、Journal がビューを更新していることを示しています。

... a.p.i.e.InMemoryJournalStorage akka://entityViewSpec/user/JournalStorage - received handled message GetJournalEntriesExceptDeleted(ea-ZleUNl1a3N,1,1,9223372036854775807) from Actor[akka://entityViewSpec/temp/$o]

Update送信および待機中にこのログ エントリが表示されない

短いスリープの後、期待どおりにビューが更新されます。

Thread.sleep(200)
val getState = view ? GetState

では、常に自動更新を実行せずにビューの更新を外部からトリガーするにはどうすればよいでしょうか?

アッカ 2.4.8

ありがとうございました

編集

私の間違いは非常に単純でした - 最初のメッセージを保持するのに十分な時間を与えていませんでした -Update関連するイベントがまだストアから利用できないときに呼び出しが受信されました. 自動更新設定は、更新前に 100 ミリ秒待機しました。メモリ内永続性を備えたローカル マシンでは、Update. 次に、システムがイベントをフェッチして適用する時間を与えます。

動作していません:

actor ! MyCommand
view ! Update(await = true)
Thread.sleep(500)
val getState = view ? GetState

働く:

actor ! MyCommand
Thread.sleep(50)
view ! Update(await = true)
Thread.sleep(500)
val getState = view ? GetState
4

1 に答える 1

1

私はあなたの問題を再現しようとしましたが、私のビューは更新されています:/ 私の例を確認してください: https://github.com/kpbochenek/akka-playground

走るMyPersistentView.scala

自動更新はオフです

ログで確認できます (アクターが永続アクターによって永続化されたメッセージを受信する):

00:11:35.325 [pw-akka.actor.default-dispatcher-5] INFO  com.kpbochenek.MyActor - persisted! AAAAAAAA
00:11:35.326 [pw-akka.actor.default-dispatcher-9] INFO  com.kpbochenek.MyActor - persisted! 11111111
00:11:37.254 [pw-akka.actor.default-dispatcher-4] INFO  com.kpbochenek.MyView - VIEW READ AAAAAAAA
00:11:37.255 [pw-akka.actor.default-dispatcher-4] INFO  com.kpbochenek.MyView - VIEW READ 11111111
于 2016-08-03T22:18:16.163 に答える