StatisticsAppController에서 EnqueueAsync를 호출하여 실행되는 것을 확인할 수 있습니다.
이때 StatisticsAppController의 결과 값은 대기열의 실행 여부와 상관없이 동작합니다.
EnqueueAsync 메서드에는 우선순위 및 지연과 같은 매개변수를 사용할 수 있습니다.
public BackgroundJobManager : IBackgroundJobManager{ public asyncTask<string> EnqueueAsync<TJob,TArgs>(TArgs args,BackgroundJobPriority priority =BackgroundJobPriority.Normal,TimeSpan? delay =null) { // ... }}
2. 백그라운드 워커
백그라운드 워커는 사용자와의 상호 작용없이 단독으로 돌아가는 작업입니다. 일반적으로 주기적 실행되는 반복 작업을 수행합니다.
주기적으로 실행하여 오래된 로그 파일를 삭제할 수 있습니다.
주기적으로 실행하여 잠김 처리된 사용자를 식별하고 관리자에게 알림을 보내 처리할 수 있습니다.
타 시스템과의 연동을 위해 특정 시간에 데이터를 가져오거나, 내보내는 작업을 진행할 수 있습니다.
아래 샘플 코드로 사용할 수 있습니다.
publicclassSampleBackgroundWorker:PeriodicBackgroundWorkerBase,ITransient{ /// <summary> /// <seecref="SampleBackgroundWorker"/> 클래스의 새 인스턴스를 초기화합니다. /// </summary> /// <paramname="timer">A timer.</param>publicSampleBackgroundWorker(AxsTimer timer) : base(timer) { // 1초 후에 DoWork가 시작 되도록 세팅Timer.Period=1000*1; } /// <summary> /// 이 메서드를 구현하여 주기적인 작업을 수행해야 합니다. /// </summary> [UnitOfWork]protectedoverridevoidDoWork() { // 모든 테넌트 데이터에 접근이 되도록 필터를 해제 한다.using (CurrentUnitOfWork.DisableFilter(AxsDataFilters.MayHaveTenant)) { // DB 작업 또는 배치 작업 진행if (IsRunning) { // Worker 중지 요청을 받지 안았다면 실행 // 업무 로직을 실행 하도록 한다.Logger.Info("SampleBackgroundWorker 실행 됨"); } } // 일정 시간이 되었을 때 외부 연동 작업 진행Timer.Period=1000*1; }}