c# - Azure函数: async method and output parameters

标签 c# queue azure-functions message-queue

我想在我的azure函数中使用输出队列。我从以下位置获取示例代码: https://learn.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)));

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

最佳答案

您正在寻找IAsyncCollector<T>从 out 参数更改为那个。您将“out string message”更改为ICollector<string> messages,而不是“out string message”或IAsyncCollector<string>并将您的消息添加到正文中的集合中。

关于c# - Azure函数: async method and output parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54391454/

相关文章:

c# - 如何在 C#.Net 中使用 MySQL 时摆脱 "Empty Path is not valid "错误

c# - FIFO 队列导致 IIS 处理器达到 100% 的最大值

jquery - 使用幻灯片库(jquery)点击太快

azure-functions - 如何在 Azure Function App 中禁用只读模式?

azure - 使用共享程序集部署 Azure Function

python - 如何访问 Github Actions Azure 函数部署的详细输出?

c# - 如何将数据库数据转换为 XML 文件

c# - 来自内部文件夹的 ASP.NET Server.Mappath 问题

c# - 如何从按钮中获取文件

c++ - 将项目从 List move 到 Stack 或 Queue