基于服务总线触发消息内容的 Azure Functions 动态输入/输出绑定(bind)

标签 azure azure-functions azure-servicebus-queues

我正在尝试创建具有多个绑定(bind)的 Azure Function 2.0。该函数由Azure服务总线队列消息触发,我想根据此消息内容读取Blob。我已经尝试过以下代码:

public static class Functions
{
    [FunctionName(nameof(MyFunctionName))]
    public static async Task MyFunctionName(
        [ServiceBusTrigger(Consts.QueueName, Connection = Consts.ServiceBusConnection)] string message,
        [Blob("container/{message}-xyz.txt", FileAccess.Read, Connection = "StorageConnName")] string blobContent
    )
    {
        // processing the blob content
    }
}

但我收到以下错误:

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

我在某处看到可以使用动态绑定(bind),但也许无法基于另一个输入绑定(bind)创建输入绑定(bind)。有什么想法吗?

最佳答案

我真的很惊讶这不起作用。绑定(bind)有很多怪癖。请尝试一下:

public static class Functions
{
    [FunctionName(nameof(MyFunctionName))]
    public static async Task MyFunctionName(
        [ServiceBusTrigger(Consts.QueueName, Connection = Consts.ServiceBusConnection)] MyConcreteMessage message,
        [Blob("container/{message}-xyz.txt", FileAccess.Read, Connection = "StorageConnName")] string blobContent
    )
    {
        // processing the blob content
    }
}

创建 DTO:

public class MyConcreteMessage 
{
    public string message {get;set;}
}

确保您在服务总线中使用的消息类似于以下内容:

{
  "message": "MyAwesomeFile"
}

它现在应该能够读取您的绑定(bind)container/{message}-xyz.txt并识别该消息

关于基于服务总线触发消息内容的 Azure Functions 动态输入/输出绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57248690/

相关文章:

azure - Azure 虚拟机上的 SSH 连接被拒绝

c# - 如何为 C# Azure Function 编写单元测试?

Azure Function 无法连接到 Cosmos DB

azure - 捕获所有异常

azure - 自动部署 Azure AD B2C 实例的推荐方法?

.net - Azure 云服务(经典)-单个实例缺少根 CA/SSL 证书,无法验证

azure - 如何在 Azure 中启动 secret 计算 VM?

c# - Azure 服务总线重试选项不起作用

c# - 实现 Azure 服务总线监听器应用程序

azure - 从服务总线队列检索消息时出错