gpt4 book ai didi

c# - Azure Function 无法与 QueueTrigger 和非 void 返回值一起使用?

转载 作者:行者123 更新时间:2023-12-02 06:20:08 27 4
gpt4 key购买 nike

我发布了一个函数的 3 个不同版本,最后一个版本开始出现问题。我认为它是异步、队列触发器和返回值的组合,但我不确定(而且我找不到任何可以帮助我的文档)。

V1:开箱即用的 Visual Studio 模板

    [FunctionName("Function1")]
public static void Run([QueueTrigger("myqueue-items", Connection = "")]string myQueueItem, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
}

部署和测试时按预期工作。

V2:更改为 async Task

    [FunctionName("Function1")]
public static async Task([QueueTrigger("myqueue-items", Connection = "")]string myQueueItem, TraceWriter log)
{
await Task.Delay(1000);
log.Info($"C# Queue trigger function processed: {myQueueItem}");
}

还是不错的。

V3:使用Task<string>

    [FunctionName("Function1")]
public static async Task<string> Run([QueueTrigger("myqueue-items", Connection = "")]string myQueueItem, TraceWriter log)
{
await Task.Delay(1000);
log.Info($"C# Queue trigger function processed: {myQueueItem}");
return new string(myQueueItem.Reverse().ToArray());
}
}

现在,当我在门户中测试时,我看到的只是 Status: 202 Accepted ,没有输出,没有记录任何内容,日志流中没有错误,等等。除了我所做的增量猜测和检查之外,实际上不可能找出出了什么问题。

知道问题是什么吗?

最佳答案

队列触发器无法向调用者返回任何数据:它毕竟是一个队列。

您可以使用输出绑定(bind)功能,例如将输出发送到另一个队列。但是您需要使用额外的属性来注释此绑定(bind):

[FunctionName("Function1")]
[return: Queue("myqueue-output", Connection = "")]
public static async Task<string> Run([QueueTrigger("myqueue-items", Connection = "")]string myQueueItem, TraceWriter log)
{
await Task.Delay(1000);
log.Info($"C# Queue trigger function processed: {myQueueItem}");
return new string(myQueueItem.Reverse().ToArray());
}

关于c# - Azure Function 无法与 QueueTrigger 和非 void 返回值一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51218969/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com