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

如何在Node.js Azure函数中获取Service Bus消息的自定义属性?

在Node.js Azure Functions中访问Service Bus消息的内容和自定义属性

我来帮你搞定这个问题!在Node.js版的Azure Functions里,要获取来自IoT Hub转发的Service Bus消息的消息体和**自定义属性(包括设备ID等元数据)**其实非常直观,下面我给你详细说明实现方式:

核心思路

当IoT Hub把设备消息转发到Service Bus队列/主题后,你的Node.js函数通过Service Bus触发器接收消息时,触发器会把完整的消息对象传递给函数,其中:

  • 消息体直接存放在消息对象的body属性中
  • 所有自定义属性(包括设备端设置的属性、IoT Hub自动添加的元数据)都在userProperties对象里

完整代码示例

1. 函数逻辑代码(index.js)

module.exports = async function(context, mySbMsg) {
    // 1. 获取设备发送的字符串格式消息体
    const messageContent = mySbMsg.body;
    context.log(`收到来自设备的消息: ${messageContent}`);

    // 2. 获取IoT Hub自动添加的设备ID元数据
    const deviceId = mySbMsg.userProperties['iothub-connection-device-id'];
    context.log(`发送消息的设备ID: ${deviceId}`);

    // 3. 获取设备端自定义的属性(替换成你实际的属性键名)
    const customDeviceProperty = mySbMsg.userProperties['device-custom-property'];
    if (customDeviceProperty) {
        context.log(`设备自定义属性值: ${customDeviceProperty}`);
    }

    // 可选:遍历所有自定义属性,方便调试查看所有元数据
    context.log('=== 所有消息属性 ===');
    Object.entries(mySbMsg.userProperties).forEach(([key, value]) => {
        context.log(`${key}: ${value}`);
    });
};

2. 绑定配置(function.json)

确保你的触发器配置正确,指定Service Bus的队列/主题名称和连接字符串:

{
  "bindings": [
    {
      "name": "mySbMsg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "queueName": "your-target-queue", // 替换成你的Service Bus队列名称
      "connection": "ServiceBusConnectionString", // 对应应用设置里的连接字符串键名
      "accessRights": "manage"
    }
  ]
}

关键注意事项

  • 连接字符串配置:请在Azure门户的函数应用「配置」中添加ServiceBusConnectionString,值为你的Service Bus命名空间连接字符串;本地开发时则放在local.settings.json里。
  • 消息体格式:如果设备发送的是JSON格式消息,你可以用JSON.parse(mySbMsg.body)将字符串解析为JSON对象使用。
  • IoT Hub元数据:除了iothub-connection-device-id,IoT Hub还会自动添加其他元数据,比如iothub-enqueuedtime(消息入队时间)、iothub-message-source(消息来源)等,都可以通过userProperties直接获取。

内容的提问来源于stack exchange,提问作者Paweł Skorupiński

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:02:37