#azure-webjobs #azure-webjobssdk
#azure-webjobs #azure-webjobssdk
Вопрос:
С новым выпуском Azure Webjobs 3.0.0 SDK было объявлено: http://azure.microsoft.com/blog/2014/06/18/announcing-the-0-3-0-beta-preview-of-microsoft-azure-webjobs-sdk/
Улучшено обнаружение функций
Мы добавили ITypeLocator и INameResolver, чтобы настроить внешний вид SDK WebJobs> для функций. Это позволяет использовать такие сценарии, как следующие:
- Вы можете определять функции, в которых имя очереди не является явным. Вы можете считывать имена очередей из источника конфигурации и указывать это значение во время выполнения.
- Ограничьте обнаружение функций определенным классом или сборкой.
- Динамические функции во время индексации: сигнатуру функции можно определить во время выполнения.
Но нет примера кода о том, как это сделать.
Кто-нибудь знает, как определить имя очереди во время выполнения (например, из app.config)?
Ответ №1:
Если вы воспользуетесь преимуществами нового INameResolver в конфигурации, вы можете создать собственную реализацию интерфейса и заменить его в конфигурации JobHostConfiguration. Взгляните на это сообщение в блоге, где я сделал небольшой комментарий по этой теме.
Комментарии:
1. Ссылка на сообщение в блоге не работает. Это пример того, почему ответ должен как минимум включать фрагменты кода, а не полагаться только на ссылку.
Ответ №2:
Чтобы использовать внешнюю службу времени выполнения для определения имени очереди:
public class QueueNameResolver : INameResolver
{
public string Resolve(string practiceId)
{
//define in appsettings the queuename property
return CloudConfigurationManager.GetSetting("queuname");
//or some other service of your design
}
}
В коде WebJob Program.cs:
public void init()
{
// Retrieve storage account from connection string.
string azureJobStorageConnectionString = ConfigurationManager.ConnectionStrings["AzureWebJobsStorage"].ConnectionString;
var config =
new JobHostConfiguration(azureJobStorageConnectionString)
{
NameResolver = new QueueNameResolver()
};
host = new JobHost(config);
host.RunAndBlock();
}
согласно документу azure