2017-05-22 4 views
2

Documentation는 말한다 :서비스 패브릭 알림

알림이 지정된 시간에 배우의 영구 콜백을 유발하는 메커니즘입니다. 이들의 기능은 타이머와 유사합니다. 그러나 타이머와 달리, 미리 알림은 명시 적으로 등록을 취소하거나 배우가 명시 적으로 삭제 될 때까지 모든 상황에서 트리거됩니다. 특히 액터 런타임은 액터의 미리 알림에 대한 정보를 유지하기 때문에 액터 비활성화 및 페일 오버 전체에서 미리 알림이 트리거됩니다.

은의 우리가 1 시간 후에 실행하도록 설정 알림이 있지만 배우가 10 분 유휴 시간 제한 및 검사 간격을 가지고 있다고 가정 해 봅시다 말 이분 (에서 설정 한 배우의 ActorGarbageCollectionSettings).

처음 15 분이 지나면 어떤 일이 생기므로 GC는 비활성화되고 45 분 후 배우를 다시 만드는 것을 어떻게 알 수 있습니까? 그리고 액터를 만들 때 사용할 액터 ID를 어떻게 알 수 있습니까?

https://www.codit.eu/blog/2016/08/25/how-to-enable-automatic-scheduling-in-service-fabric-actors/

https://dajbych.net/azure-service-fabric-scheduled-tasks

답변

1

이의 우리가 1 시간 후에 실행하도록 설정 알림 있다고 가정 해 봅시다,하지만 배우가의 유휴 시간 제한이 있습니다

나는이 패턴이 어떻게 작동하는지 궁금 변경할 수 없기 요구 10 분 및 스캔 간격, 예를 들어 2 분 (액터의 ActorGarbageCollectionSettings에서 설정). 액터가 너무 유휴 처음 15 분 어떻게됩니까

무엇 발생하는 푸른 서비스 패브릭에 의해 필요하고 드 알림 코드가있을 때 배우가 자동으로 활성화되어 있다는 것입니다 .. GC'd 및 비활성화입니다 실행. 액터 프레임 워크에서 제공하는 이벤트 및 가상 메서드 (OnActivateAsync/OnDeactivateAsync)를 사용하면 쉽게 추적 할 수 있습니다. 사실 repo은 EventSource 기반 로깅 메커니즘을 사용하여 정확하게 보여줍니다.

ASF가 타이머와 리마인더를 실제로 추적하는 방법은 프로젝트를 공개하는 것이므로 source code에서 이미 확인할 수 있습니다.

편집 : 나는 내부 타이머를 사용하여 참조 https://github.com/Azure/service-fabric-services-and-actors-dotnet/blob/develop/src/Microsoft.ServiceFabric.Actors/Runtime/ActorReminder.cs

를 참조하십시오 ConcurrentDictionary의 특정 ActorId의 모든 알림을 추적 ActorManager 있습니다.

편집 2 : 명시 적으로 당신이 당신의 질문에 추가 된 docs에 명시되어

알림은 지정된 시간에 배우에 대한 지속적인 콜백을 유발하는 메커니즘입니다. 이들의 기능은 타이머와 유사합니다. 그러나 타이머와 달리, 미리 알림은 명시 적으로 등록을 취소하거나 배우가 명시 적으로 삭제 될 때까지 모든 상황에서 트리거됩니다. 특히 미리 알림은 액터 비활성화를 통해 트리거되고 액터 런타임은 액터의 미리 알림에 대한 정보를 유지하기 때문에을 페일 오버합니다.

+0

아아 내 말! 그것은 훌륭합니다. 이 점에 대해 많은 감사를 드리고 라이브러리의 적절한 소스를 연결하십시오. 시간이 많이 걸렸습니다. :) – Mardoxx

관련 문제