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

Python版Azure Functions V2:如何为Service Bus消息设置SessionID

解决Azure Functions V2 Python版设置Service Bus主题消息SessionID的问题

你之前通过JSON字符串的brokerProperties设置SessionID不生效,核心原因是:当使用func.Out[str]作为输出绑定类型时,Azure Functions只会把字符串当作消息的内容体,不会解析其中的属性字段。要设置SessionID这类Service Bus原生属性,必须用azure.servicebus库的ServiceBusMessage对象构造消息。

修改步骤

  1. 导入ServiceBusMessage类
  2. 替换JSON字符串构造逻辑,用ServiceBusMessage实例直接设置session_id
  3. 自定义属性通过消息对象的application_properties字典添加
  4. 输出绑定参数可指定为func.Out[ServiceBusMessage]以明确类型

修改后的完整代码

import logging
import azure.functions as func
from datetime import datetime
from azure.servicebus import ServiceBusMessage  # 新增导入

app = func.FunctionApp()

@app.route(route="http_trigger_topic", auth_level=func.AuthLevel.ANONYMOUS)
@app.service_bus_topic_output(arg_name="message",
                              connection="ServiceBusConnection",
                              topic_name="alfdevapi6topic")
def http_trigger_topic(req: func.HttpRequest, message: func.Out[ServiceBusMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    myMessage = "Hi alf this is my message via the queue to you."
    logging.info(myMessage)
    
    input_msg = req.params.get('message')
    now = datetime.now()

    # 构造带SessionID的Service Bus消息
    sb_message = ServiceBusMessage(body=myMessage)
    sb_message.session_id = "1"  # 直接设置SessionID
    
    # 添加自定义属性
    sb_message.application_properties["messagenumber"] = 0
    sb_message.application_properties["timePublish"] = now.strftime("%d/%m/%Y %H:%M:%S")

    # 发送消息
    message.set(sb_message)

    return func.HttpResponse(
        "消息已发送并成功设置SessionID",
        status_code=200
    )

关键说明

  • ServiceBusMessage是Azure Service Bus官方SDK提供的消息对象,原生支持设置session_id、message_id等Broker属性
  • 自定义业务属性需存入application_properties字典,对应原代码中的customProperties
  • 输出绑定参数类型声明为func.Out[ServiceBusMessage]可增强类型校验,也可保留func.Out不指定类型,Functions运行时会自动适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 16:02:39