【问题标题】:Azure Function : async method and output parametersAzure 函数:异步方法和输出参数
【发布时间】:2019-06-20 20:00:23
【问题描述】:

我想在我的 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)

我得到一个错误:

异步方法不能有 ref、in 或 out 参数

当然,我可以做到:

    [Queue("domain-add-to-office365", Connection = "StorageConnectionString")]CloudQueue outputQueue,

然后使用它:

await outputQueue.AddMessageAsync(new CloudQueueMessage(JsonConvert.SerializeObject(queueItem)));

但我想通过绑定到队列消息来做到这一点

【问题讨论】:

    标签: c# queue azure-functions message-queue


    【解决方案1】:

    您正在寻找 IAsyncCollector<T> 以从 out 参数更改为该参数。而不是“输出字符串消息”,您更改为 ICollector<string> messagesIAsyncCollector<string> 并将您的消息添加到正文中的集合中。

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多