如何通过REST API向会话启用的Azure Service Bus主题传递SessionId?
如何通过Azure Service Bus REST API传递SessionId给启用会话的订阅
要解决会话启用的订阅拒收无SessionId消息的问题,你可以通过HTTP请求的**BrokerProperties请求头**传递SessionId,这是Service Bus REST API用于指定消息元数据的特殊头,文档未明确提及但确实支持该用法。
具体操作步骤:
- 在POST请求的头信息中添加
BrokerProperties字段,值为包含SessionId的JSON字符串,格式示例:{"SessionId": "你的会话ID"} - 确保该JSON字符串为UTF-8编码,同时请求的
Content-Type与消息体格式匹配(如application/json或application/xml)
示例请求(curl)
curl -X POST "https://你的服务总线命名空间.servicebus.windows.net/你的主题名称/messages" \ -H "Authorization: SharedAccessSignature sr=你的服务总线命名空间.servicebus.windows.net&sig=你的签名&se=过期时间戳&skn=SAS密钥名称" \ -H "BrokerProperties: {\"SessionId\": \"session-001\"}" \ -H "Content-Type: application/json" \ -d "{\"content\": \"测试会话消息\"}"
注意事项
- SessionId不能包含空格、控制字符等特殊字符,需符合Azure Service Bus的命名规则
- 使用Postman等可视化工具时,
BrokerProperties的值无需转义双引号,直接填写{"SessionId": "session-001"}即可 - 发送到主题的消息必须携带SessionId,才能被启用会话的订阅正确接收,否则会被死信
内容的提问来源于stack exchange,提问作者AVijay
相关产品推荐
相关产品推荐

