2017-01-25 4 views
1

다중 테넌트 애플리케이션에 Masstransit scheduling API를 사용하고 싶습니다. 세입자 당 반복되는 메시지를 보내야합니다.Masstransit - 멀티 테넌트 지원을위한 반복적 인 메시지 스케줄링

var schedule1 = new MySchedule("1 * * * * ?", "Tenant 1"); 
var schedule2 = new MySchedule("6 * * * * ?", "Tenant 2"); 

endPoint.Result.ScheduleRecurringSend(sendToUri, schedule1, new OrderCommand 
{ 
    Id = Guid.NewGuid().ToString(), 
    Name = "Tenant 1" 
}); 

endPoint.Result.ScheduleRecurringSend(sendToUri, schedule2, new OrderCommand 
{ 
    Id = Guid.NewGuid().ToString(), 
    Name = "Tenant 2" 
}); 


public class MySchedule : DefaultRecurringSchedule 
{ 
    public MySchedule(string cronExpression, string description) 
    { 
     CronExpression = cronExpression; 
     Description = description; 
    } 
} 

문제는 스케줄러가 작업 이름으로 클래스 이름 "MyScheduler"를 사용하고 MyScheduler을 사용하여 두 반복 메시지를 보낼 수 있다는 것입니다. Masstransit scheduling API로 멀티 테넌시를 구현할 수 있습니까?

답변

1

생성자 (MySchedule 클래스)의 ScheduleId 및/또는 ScheduleGroup을 임차인별로 변경하면 Quartz에서 사용되는 식별자가 변경됩니다.

public class MySchedule : DefaultRecurringSchedule 
{ 
    public MySchedule(string cronExpression, string description, string tenantId) 
    { 
     CronExpression = cronExpression; 
     Description = description; 

     ScheduleId = "MyScheduleForTenant" + tenantId; 
    } 
} 
+0

예, 그렇습니다. DefaultRecurringSchedule 대신 RecurringSchedule 인터페이스를 사용해야하고 Quartz 식별자를 변경합니다. –