gpt4 book ai didi

c# - Azure Function blob 输入与服务总线触发器绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 21:28:53 26 4
gpt4 key购买 nike

我正在尝试创建一个在 AZ ServiceBus 队列消息上触发的 Azure 函数。该消息包含一个 GUID 字符串,与 AZ 存储上的 BLOB 名称匹配。我希望通过输入绑定(bind)提供该 BLOB,但我不知道如何...

我尝试过:

public static async Task Run(
[ServiceBusTrigger("outgoing-mail", Connection = "QueueConnString")] string inputMessage,
[Blob("email-messages/{inputMessage}", FileAccess.Read)] Stream mailBlob,
[SendGrid(ApiKey = "%SendgridApiKey%")] IAsyncCollector<SendGridMessage> messageCollector,
ILogger log)

我还顺便在 blob 路径上尝试了 {serviceBusTrigger},但无论哪种方式,我都会收到以下异常:

Microsoft.Azure.WebJobs.Host: Error indexing method 'SendMailQueueWorker'. Microsoft.Azure.WebJobs.Host: Unable to resolve binding parameter 'inputMessage'. Binding expressions must map to either a value provided by the trigger or property of the value the trigger is bound to or must be a system binding expression (e.g. sys.randguid, sys.utcnow, etc.).

我确定队列的输入消息是一个字符串,我如何在 BLOB 的输入绑定(bind)中使用此消息内容?

[编辑]
我已将功能请求添加到 UserVoice,因此如果您也遇到此问题,请投票! https://feedback.azure.com/forums/355860-azure-functions/suggestions/37528912-combine-servicebus-queue-message-with-storage-inpu
[/编辑]

最佳答案

服务总线触发器似乎不支持队列触发器。
您可以通过 UserVoice 提出功能请求为此。

但是需要注意的一件事是,此限制适用于非 JSON 消息。如果您发送 JSON 消息,它将被解析为 documented .

你的函数可能是这样的

using System;
using System.IO;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace funk_csharp_queue
{
public class QueueMsg
{
public string filename { get; set; }
}
public static class ServiceBusTrigger
{
[FunctionName("ServiceBusTrigger")]
public static void Run(
[ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] QueueMsg myQueueItem,
[Blob("samples-workitems/{filename}", FileAccess.Read)] String myBlob,
ILogger log)
{
log.LogInformation($"C# Service Bus trigger function processed: {JsonConvert.SerializeObject(myQueueItem)}");
log.LogInformation($"C# Blob input read: {myBlob}");
}
}
}

您在服务总线队列/主题中发送的消息将是这样的

{
"filename": "11c8f49d-cddf-4b82-a980-e16e8a8e42f8.json"
}

确保您设置了 Content Typeapplication/json

关于c# - Azure Function blob 输入与服务总线触发器绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55916333/

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