c# - 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)));
但我想通过绑定到队列消息来做到这一点
解决方案
您正在寻找IAsyncCollector<T>
从 out param 更改为 that。而不是“输出字符串消息”,您更改为ICollector<string> messages
或IAsyncCollector<string>
将您的消息添加到正文中的集合中。
推荐阅读
- python - 在 Django 中搜索期间分页不起作用
- jquery - 在两列布局中切换特定列?
- android - 如何清除/删除 Webview 的 Web 存储
- python-3.x - Gtk.PrintOperation.run () 没有响应
- haskell - Stack 坚持构建 Cabal 包
- javascript - 如何在 phpMyAdmin 中调用和显示数据库
- django - Django 将表单实例保存到不同的数据库
- macos - 需要 brew 覆盖 /usr/local/etc/httpd/
- php - 无法与子域共享 cookie
- python - 如何解决包模块导入错误