Для чего используется AddService JobHostingConfiguration с веб-заданиями Azure
У меня есть следующая функция WebJob...
public class Functions
{
[NoAutomaticTrigger]
public static void Emailer(IAppSettings appSettings, TextWriter log, CancellationToken cancellationToken)
{
// Start the emailer, it will stop on dispose
using (IEmailerEndpoint emailService = new EmailerEndpoint(appSettings))
{
// Check for a cancellation request every 3 seconds
while (!cancellationToken.IsCancellationRequested)
{
Thread.Sleep(3000);
}
log.WriteLine("Emailer: Canceled at " + DateTime.UtcNow);
}
}
}
Я смотрел на то, как это создается, что я могу сделать с помощью простого вызова...
host.Call(typeof(Functions).GetMethod("MyMethod"), new { appSettings = settings })
Однако меня удивляет, как TextWriter и CancellationToken включены в реализацию. Я заметил, что JobHostingConfiguration имеет методы для AddService, и я попытался внедрить мои appSettings, используя это, но это не удалось с ошибкой "Параметр привязки исключения".
Итак, как CancellationToken включается в создание экземпляра и для чего используется JobHostingConfiguration AddService?
1 ответ
Каким образом CancellationToken включается в реализацию
Вы можете использовать класс WebJobsShutdownWatcher, потому что он имеет функцию Register, которая вызывается при отмене токена отмены, другими словами, когда останавливается веб-работа.
static void Main()
{
var cancellationToken = new WebJobsShutdownWatcher().Token;
cancellationToken.Register(() =>
{
Console.Out.WriteLine("Do whatever you want before the webjob is stopped...");
});
var host = new JobHost();
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}
для чего используется AddHervice JobHostingConfiguration?
Добавить службы: переопределить службы по умолчанию через вызовы AddService<>. Распространенными службами для переопределения являются ITypeLocator и IJobActivator.
Вот пользовательский IJobActivator позволяет использовать DI, вы можете обратиться к нему для поддержки методов экземпляра.