#azure-webjobs
#azure-webjobs
Вопрос:
Я создаю непрерывное задание, которое прослушивает сообщения очереди Azure. Используя документацию, у меня есть что-то вроде этого:
static async Task Main()
{
var builder = new HostBuilder();
builder.UseEnvironment("development");
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
public static void Run(
[QueueTrigger("myqueue-items")] string myQueueItem,
ILogger log)
{
...
}
Я не поклонник атрибута magic QueueTrigger
, найденного во время выполнения. Можно ли добавить функцию запуска вручную? Я представляю себе что-то вроде:
static async Task Main()
{
var builder = new HostBuilder();
builder.UseEnvironment("development");
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddQueueListener("myqueue-items", Run); // no magic attributes, compiler error if Run function is deleted
});
var host = builder.Build();
using (host)
{
await host.RunAsync();
}
}
public static void Run(
string myQueueItem,
ILogger log)
{
...
}
Ответ №1:
Да, вы можете использовать ручные триггеры, вам не нужно использовать QueueTrigger
атрибут, но, как описано в документе: чтобы запустить функцию вручную, используйте NoAutomaticTrigger
атрибут.
Поэтому, я думаю, используете ли вы автоматические триггеры или ручные триггеры, вы должны добавить триггер с атрибутами, что необходимо!