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

如何在Node.js Azure函数中为Service Bus Topic消息添加自定义属性

解决Node.js Azure函数向Service Bus Topic传递自定义属性的问题

你的问题出在自定义属性的放置位置:当前代码将number放在了消息体的customProperties字段中,但Service Bus不会把这个字段识别为消息的自定义元数据属性,因此无法用于订阅过滤。

正确实现方式

Azure函数的Service Bus输出绑定支持直接构造包含应用属性的消息对象,无需手动将整个对象序列化为JSON字符串。修改后的代码如下:

Bindings(无需修改)

{
  "bindings": [
    {
      "type": "serviceBus",
      "direction": "out",
      "connection": "ServiceBusConnectionString",
      "name": "event",
      "topicName": "mytopic"
    }
  ]
}

index.js(修改后)

// 构造业务消息主体
const eventBody = {
    id: eventId,
    dataVersion: version,
    eventType: eventType,
    data: data,
    eventTime: eventTime
};

// 构造包含自定义属性的Service Bus消息
const serviceBusMessage = {
    body: eventBody,
    // 自定义属性放在applicationProperties中,这会被Service Bus识别为消息元数据
    applicationProperties: {
        number: 5
    }
};

// 直接赋值给绑定,绑定会自动处理序列化
context.bindings.event = serviceBusMessage;

说明

  • applicationProperties是Service Bus消息的标准字段,用于存储自定义元数据属性,这些属性会被Service Bus识别并支持订阅过滤。
  • 无需手动调用JSON.stringify,Azure函数的Service Bus绑定会自动处理消息体的序列化和属性的传递。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:50:28