2017-01-25 2 views
1

Я бы хотел использовать API-интерфейс Masstransit для многопользовательского приложения. Мне нужно отправить повторяющиеся сообщения на каждого арендатора.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. Есть ли способ реализовать многозадачность с API-интерфейсом Masstransit?

ответ

1

Изменение ScheduleId и/или ScheduleGroup в конструкторе (для MySchedule класса), чтобы быть арендатором конкретного, и это изменит идентификатор, используемый Quartz.

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

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

Да, это все. Я должен использовать интерфейс RecurringSchedule вместо DefaultRecurringSchedule, и он изменяет идентификатор кварца. –

Смежные вопросы