如何从Azure Synapse Notebook向Service Bus队列发送消息?
Azure Synapse Notebook 向 Service Bus 队列发送消息的实现方法
完全可以通过Azure Synapse Notebook(Python环境)实现向Service Bus队列发送消息,以下是具体的配置和操作步骤:
1. 安装依赖包
在Synapse Notebook的代码单元格中,先安装Azure Service Bus的Python SDK:!pip install azure-servicebus
2. 准备Service Bus连接信息
从Azure门户获取两个关键信息:
- Service Bus命名空间的主连接字符串(在Service Bus资源的"共享访问策略"中获取)
- 目标队列的名称
3. 基础消息发送代码
替换占位符后直接运行即可完成单条消息发送:
from azure.servicebus import ServiceBusClient, ServiceBusMessage # 替换为你的实际信息 SB_CONNECTION_STR = "<你的Service Bus主连接字符串>" QUEUE_NAME = "<目标队列名称>" # 初始化客户端并发送消息 servicebus_client = ServiceBusClient.from_connection_string(conn_str=SB_CONNECTION_STR) with servicebus_client: sender = servicebus_client.get_queue_sender(queue_name=QUEUE_NAME) with sender: # 这里可以替换为从Blob加载的实际数据 message_content = "从Blob加载的数据内容" message = ServiceBusMessage(message_content) sender.send_messages(message) print("消息已成功发送至Service Bus队列")
4. 结合Blob数据加载的完整示例
如果需要从Blob存储加载数据后发送,可结合Azure Blob Storage SDK实现:
from azure.servicebus import ServiceBusClient, ServiceBusMessage from azure.storage.blob import BlobServiceClient # Blob存储信息 BLOB_CONN_STR = "<你的Blob Storage连接字符串>" CONTAINER_NAME = "<Blob容器名称>" BLOB_FILE_NAME = "<目标Blob文件名>" # Service Bus信息 SB_CONN_STR = "<你的Service Bus主连接字符串>" QUEUE_NAME = "<目标队列名称>" # 加载Blob数据 blob_client = BlobServiceClient.from_connection_string(BLOB_CONN_STR).get_blob_client(container=CONTAINER_NAME, blob=BLOB_FILE_NAME) blob_data = blob_client.download_blob().readall().decode("utf-8") # 发送数据到Service Bus servicebus_client = ServiceBusClient.from_connection_string(conn_str=SB_CONN_STR) with servicebus_client: sender = servicebus_client.get_queue_sender(queue_name=QUEUE_NAME) with sender: # 若Blob数据过大,可拆分后批量发送 message = ServiceBusMessage(blob_data) sender.send_messages(message) print("Blob数据已成功发送至Service Bus队列")
关键注意事项
- 权限配置:确保Synapse工作区有权访问Service Bus和Blob Storage,可使用Managed Identity或直接通过连接字符串授权(测试场景推荐后者)
- 批量发送:若需发送大量消息,可将消息存入列表后调用
send_messages(message_list)提升效率 - 异常处理:建议添加try-except块捕获连接超时、发送失败等异常,保证代码健壮性
内容的提问来源于stack exchange,提问作者Naga
相关产品推荐
相关产品推荐

