.NET5 Azure 函数服务总线触发器绑定属性

.NET5 Azure Function Service Bus Trigger Binding attributes

我目前正在使用 Micrsoft.Azure.Functions.Worker.Extensions.ServiceBus 包。

我希望能够将 queueItem 序列化为我的自定义类型并获取消息接收器,但无法做到。我如何在 .NET5 Azure Functions 中执行此操作?

        [Function(nameof(Run))]
        public async Task Run([ServiceBusTrigger("queuename", IsSessionsEnabled = true, Connection = "ServiceBusConnectionString")] QueueMessagePayload queueItem,
            MessageReceiver messageReceiver,
                string lockToken,
   FunctionContext context)

MessageRecevier 不存在(语法错误)。如果我指定自定义类型而不是字符串,我也会收到以下错误。

Exception: Microsoft.Azure.Functions.Worker.Diagnostics.Exceptions.FunctionInputConverterException: Error converting 1 input parameters for Function 'Run': Cannot convert input parameter 'queueItem' to type 'QueueMessagePayload' from type 'System.String'
    [Serializable]
    public class QueueMessagePayload
    {
        public ActionEnum Action { get; set; }
        public Object Body { get; set; }
    }

Azure Functions Isolated Worker SDK 不支持绑定的 SDK 类型。 特别是对于 Azure 服务总线,您需要以字符串或字节数组的形式接收消息并将其反序列化为自定义类型。

以下内容将帮助您获得更多背景信息:

  • GitHub issue关于 Azure 服务总线的 SDK 类型支持
  • Blog post 关于接收(和发送多条消息)