Azure Function:异步方法和输出参数
Azure Function : async method and output parameters
我想在我的 azure 函数中使用输出队列。我从以下位置获得示例代码:
https://docs.microsoft.com/en-us/sandbox/functions-recipes/queue-storage
[FunctionName("BasicQueueOutput")]
public static void Run([TimerTrigger("*/30 * * * * *")]TimerInfo myTimer,
TraceWriter log,
[Queue("101functionsqueue",Connection = "AzureWebJobsStorage")] out string queueMessage)
{
log.Info("101 Azure Function Demo - Storage Queue output");
queueMessage = DateTime.UtcNow.ToString();
}
它适用于同步方法,但在我的例子中它是异步方法:
[FunctionName("FunctionRegisterDomain")]
public async static Task Run(
[QueueTrigger("domain-registation", Connection = "StorageConnectionString")]DomainForRegistration queueItem,
[Queue("domain-add-to-office365", Connection = "StorageConnectionString")]out DomainForRegistration outputQueue,
ILogger log)
我得到一个错误:
Async methods cannot have ref, in or out parameters
我当然可以:
[Queue("domain-add-to-office365", Connection = "StorageConnectionString")]CloudQueue outputQueue,
然后使用它:
await outputQueue.AddMessageAsync(new CloudQueueMessage(JsonConvert.SerializeObject(queueItem)));
但我想通过绑定队列消息来做到这一点
您正在寻找 IAsyncCollector<T>
从 out 参数更改为 that。您改为 ICollector<string> messages
或 IAsyncCollector<string>
并将您的消息添加到正文中的集合,而不是“输出字符串消息”。
我想在我的 azure 函数中使用输出队列。我从以下位置获得示例代码: https://docs.microsoft.com/en-us/sandbox/functions-recipes/queue-storage
[FunctionName("BasicQueueOutput")]
public static void Run([TimerTrigger("*/30 * * * * *")]TimerInfo myTimer,
TraceWriter log,
[Queue("101functionsqueue",Connection = "AzureWebJobsStorage")] out string queueMessage)
{
log.Info("101 Azure Function Demo - Storage Queue output");
queueMessage = DateTime.UtcNow.ToString();
}
它适用于同步方法,但在我的例子中它是异步方法:
[FunctionName("FunctionRegisterDomain")]
public async static Task Run(
[QueueTrigger("domain-registation", Connection = "StorageConnectionString")]DomainForRegistration queueItem,
[Queue("domain-add-to-office365", Connection = "StorageConnectionString")]out DomainForRegistration outputQueue,
ILogger log)
我得到一个错误:
Async methods cannot have ref, in or out parameters
我当然可以:
[Queue("domain-add-to-office365", Connection = "StorageConnectionString")]CloudQueue outputQueue,
然后使用它:
await outputQueue.AddMessageAsync(new CloudQueueMessage(JsonConvert.SerializeObject(queueItem)));
但我想通过绑定队列消息来做到这一点
您正在寻找 IAsyncCollector<T>
从 out 参数更改为 that。您改为 ICollector<string> messages
或 IAsyncCollector<string>
并将您的消息添加到正文中的集合,而不是“输出字符串消息”。