如何在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.ServiceBusNuGet包,这是Azure Functions Service Bus绑定推荐使用的最新SDK。 - 若你使用的是旧版
Microsoft.Azure.ServiceBusSDK,需将参数类型改为Message,消息体读取方式调整为Encoding.UTF8.GetString(mySbMsg.Body)。 - 建议增加
Label为空的判断逻辑,避免空引用异常。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

