Service Bus的Azure功能绑定

时间:2018-08-11 07:48:47

标签: azure azure-functions azureservicebus

我正在跟踪this documentation为服务总线队列创建触发器。

我希望能够访问邮件属性。我以为我可以像这样简单地将Dictionary<string, object> properties添加到参数列表中:

public static void Run(
        [ServiceBusTrigger(QueueName, Connection = "connectionSetting")]
        // Message message,
        string myQueueItem,
        Int32 deliveryCount,
        DateTime enqueuedTimeUtc,
        string messageId,
        string ContentType,
        Dictionary<string,object> properties,
        TraceWriter log)

但是抛出:

  

错误索引方法“ Program.Run”。 Microsoft.Azure.WebJobs.Host:   无法将参数'properties'绑定为Dictionary`2。确保   绑定支持参数类型。

这里是a list个可能的参数绑定。我怎么了?

更新:

我尝试将单数更改为

public static void Run(
        [ServiceBusTrigger(QueueName, Connection = "connectionSetting")]
        // Message message,
        string myQueueItem,
        Int32 deliveryCount,
        DateTime enqueuedTimeUtc,
        string messageId,
        string ContentType,
        IDictionary<string, object> properties,
        TraceWriter log)

它会产生相同的错误:

  

错误索引方法“ Program.Run”。 Microsoft.Azure.WebJobs.Host:   无法将参数“属性”绑定到IDictionary类型

2 个答案:

答案 0 :(得分:1)

对于功能v2运行时,参数名称已更改为pygame.draw.rect(window, Color, pygame.Rect(xpos, ypos, particle_size, particle_size)

要解决该错误,请将参数更新为以下内容:

UserProperties

这是服务总线扩展中的相关代码。

https://github.com/Azure/azure-webjobs-sdk/blob/42a711763ddecca9df4caae9c7dc5fe16178880c/src/Microsoft.Azure.WebJobs.ServiceBus/Triggers/ServiceBusTriggerBinding.cs#L127

答案 1 :(得分:0)

IDictionary<string, object> properties

更新

对于版本2,使用以下绑定:

public static void Run(
        [ServiceBusTrigger(QueueName, Connection = "connectionSetting")]
        Message message,
        string label,
        Int32 deliveryCount,       
        DateTime enqueuedTimeUtc,  
        string messageId,
        string ContentType, 
        ILogger log)
    {           
        log.LogInformation($"C# ServiceBus queue trigger function processed message: {Encoding.UTF8.GetString(message.Body)}");
        var userProperties = message.UserProperties;
    }