Azure Databricks接收Azure Service Bus消息失败问题求助
解决Azure Databricks中Python连接Service Bus队列的问题
先修复TransportType属性异常
- 你碰到的
'str'对象没有'AmqpOverWebsocket'属性错误,基本是因为TransportType的引用方式不对。必须从azure.servicebus包导入枚举类,并且直接用枚举成员,不能写成字符串。 - 正确代码示例:
from azure.servicebus import ServiceBusClient, TransportType # 替换成你的实际信息 CONNECTION_STRING = "你的Service Bus连接字符串" QUEUE_NAME = "目标队列名称" # 通过WebSocket创建客户端 servicebus_client = ServiceBusClient.from_connection_string( conn_str=CONNECTION_STRING, transport_type=TransportType.AmqpOverWebsocket ) - 重点:别把
TransportType.AmqpOverWebsocket写成"AmqpOverWebsocket",这是最容易踩的坑。
排查Databricks网络/端口限制
- Databricks集群默认可能封禁了常规AMQP端口(5671),所以切换到AmqpOverWebsocket(走443端口)是对的,但得确认集群网络允许出站访问Service Bus的443端口:
- 检查集群所在VNet的NSG规则,是否放行到
*.servicebus.windows.net的443端口出站流量 - 如果用的是Databricks托管VNet,默认应该允许,但自定义防火墙规则的话要确认没拦截
- 检查集群所在VNet的NSG规则,是否放行到
- 可以在Notebook里先测连通性(需要集群装了nc工具):
%sh nc -zv 你的命名空间.servicebus.windows.net 443
其他排查项
- 核对Service Bus连接字符串:确认
SharedAccessKeyName、SharedAccessKey和命名空间都正确 - 检查队列权限:连接字符串对应的SAS政策必须有
Listen权限 - 更新azure-servicebus包:不同版本API可能有差异,在Databricks里执行升级:
%pip install azure-servicebus --upgrade
内容的提问来源于stack exchange,提问作者Tomek Kowalczyk
相关产品推荐
相关产品推荐

