我正在使用ReliableActors進行服務結構項目的狀態。我保存並刪除了演員狀態中的事物,並且有一些我想測試的重新激活邏輯。服務結構 - 用於調試/測試目的的手動Actor取消激活
有沒有辦法手動停用或垃圾收集演員?我最好有一個測試將數據加載到演員中去激活它,然後運行一些函數以確保演員仍然按照預期運行。
我正在使用ReliableActors進行服務結構項目的狀態。我保存並刪除了演員狀態中的事物,並且有一些我想測試的重新激活邏輯。服務結構 - 用於調試/測試目的的手動Actor取消激活
有沒有辦法手動停用或垃圾收集演員?我最好有一個測試將數據加載到演員中去激活它,然後運行一些函數以確保演員仍然按照預期運行。
如果你的意思是當你說「取消」刪除,你可以使用以下命令:
await myActorServiceProxy.DeleteActorAsync(actorToDelete, cancellationToken)
一個演員被激活,在第一時間呼叫到它的任何方法制成。如果未在可配置的時間段內使用actor,則會禁用actor(由Actors運行時收集的垃圾)。演員及其狀態也可以隨時手動刪除。
可以adjust演員被視爲閒置迫使更頻繁的垃圾收集的時間。從文檔代碼:
ActorRuntime.RegisterActorAsync<MyActor>((context, actorType) =>
new ActorService(context, actorType,
settings:
new ActorServiceSettings()
{
ActorGarbageCollectionSettings =
new ActorGarbageCollectionSettings(idleTimeoutInSeconds: 20, scanIntervalInSeconds:20)
}))
.GetAwaiter()
.GetResult();
正如你可以看到,有兩個參數:idleTimeoutInSeconds - 這個時候,就是什麼也不做演員可以考慮停用之後; scanIntervalInSeconds - 服務結構將檢查角色不活動的時間間隔。
idleTimeoutInSeconds必須等於或大於scanIntervalInSeconds – Gurpreet
我知道這一點,但是這也刪除了演員的狀態,而且不是我所需要的。 –
您仍然可以使用「DeleteActorAsync」方法。想到的一個方法是,將州政府經理作爲您的測試的一部分。查看SDK 2.2(Actor依賴注入)中的新功能。公共類MockStateManager:IActorStateManager –
不是我想要的那麼幹淨,但我會研究它,看看這是否能解決我的問題。謝謝! –