You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Service Bus触发器中获取队列消息的Label属性?

解决方案

你需要将函数的参数类型从string改为ServiceBusMessage(基于最新的Azure Service Bus SDK),这样就能直接访问消息的Label属性以及其他元数据。修改后的代码如下:

using Azure.Messaging.ServiceBus;
using Newtonsoft.Json;

[FunctionName("MyFunction")]
public async Task QueueMessageReceivedAsync(
        [ServiceBusTrigger("%QueueName%", Connection = "event-bus-connection")]
        ServiceBusMessage mySbMsg)
{
    var messageLabel = mySbMsg.Label;
    var messageBody = await mySbMsg.Body.ToStringAsync();

    if (messageLabel == "MessageType1")
    {
        var messageType1Object = JsonConvert.DeserializeObject<MessageType1>(messageBody);
        return await ProcessMessageType1(messageType1Object);
    }
    else
    {
        var messageType2Object = JsonConvert.DeserializeObject<MessageType2>(messageBody);
        return await ProcessMessageType(messageType2Object);
    }
}

注意事项

  • 确保项目已安装Azure.Messaging.ServiceBus NuGet包,这是Azure Functions Service Bus绑定推荐使用的最新SDK。
  • 若你使用的是旧版Microsoft.Azure.ServiceBus SDK,需将参数类型改为Message,消息体读取方式调整为Encoding.UTF8.GetString(mySbMsg.Body)。
  • 建议增加Label为空的判断逻辑,避免空引用异常。

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:30:58