2016-07-27 9 views
2

ServiceStack 서비스에서 Hangfire 백그라운드 작업을 시작하는 방법이 있습니까? ServiceStack 서비스를 해결할 수있는 MVC 내에서 이미 작업을 시작할 수 있었지만 ServiceStack에서이 작업을 수행 할 수 있기를 원했습니다.ServiceStack에서 Hangfire 사용

+0

또한 [Hangfire 지원 포럼] (htt)에 게시하는 데 도움이 될 수 있습니다. ps : //discuss.hangfire.io/). – mythz

답변

3

좀 더 조사한 후에 나는이 게시물 setup example without owin?을 발견했습니다.

한 가지 해결 방법은 전체 Hangfire nuget 패키지를 설치하지 말고 Owin 패키지 참조 만 필요로하는 Hangfire.Core 및 Hangfire.SqlServer (또는 해당 저장소 옵션) 만 설치하는 것입니다. 유일한 단점은 당신이 Hangfire 대시 보드를 사용할 수 없다는 것입니다. 그런 다음

Hangfire 다음과 같은 코드를 통해 모든 작업을 시작 :

또한 당신이 HangFire JobActivator의 ServiceStack Funq를 사용할 수에서
JobStorage.Current = new SqlServerStorage("connection string"); 
    var server = new BackgroundJobServer(); 
    server.Start(); 

    RecurringJob.AddOrUpdate(() => System.Diagnostics.Debug.WriteLine("No OWIN"), Cron.Minutely); 

:

JobActivator.Current = new FunqJobActivator(container); 

다음과 같이 FunqJobActivator을 만든 후 :

public override object ActivateJob(Type jobType) 
    { 
     var resolved = _container.TryResolve(jobType); 

     if (resolved == null) 
     { 
      foreach (Type it in jobType.GetInterfaces()) 
      { 
       resolved = _container.TryResolve(it); 
       if(resolved != null)break; 
      } 
     } 

     return resolved; 
    } 
+0

RegisterAutoWiredAs 등록을 지원하도록 FunqJobActivator를 업데이트했습니다. – gjspaho

관련 문제