Azure Event Hubs 的 Python 客户端:通过 HTTP 代理走 WebSockets 上的 AMQP
传入 Event Hubs 的 http_proxy 字典,其中包含主机名和整数端口,同时选择 WebSocket AMQP 传输。
对于使用 HTTP 代理的 Event Hubs Python 消费者,在构建客户端时配置 SDK 的代理字典和 WebSocket 传输:
from azure.eventhub import EventHubConsumerClient, TransportType
client = EventHubConsumerClient(
fully_qualified_namespace=namespace,
eventhub_name=eventhub_name,
consumer_group='$Default',
credential=credential,
transport_type=TransportType.AmqpOverWebsocket,
http_proxy={
'proxy_hostname': 'proxy.example',
'proxy_port': 8080,
},
)
命名空间、Event Hub 名称和凭据都是应用程序已有的服务配置。接下来照常使用它的接收回调和常规的客户端关闭生命周期。
该字典直接描述中间人。它不是 Requests 所接受的 http/https 目标方案映射。对于允许公共中间人的公共 Event Hubs 命名空间,HTTP 代理列表可为无需账号的主机名和端口字段提供候选。如果需要指定的代理账号,请补上 username 和 password 两个键。
WebSockets 上的 AMQP 使用服务的 443 端口,而普通 AMQP 传输使用 5671 端口。代理仍然需要放行由此产生的到 Event Hubs 命名空间的连接。
令牌凭据在获取令牌时可能发起单独的 HTTP 请求。当这条认证路径同样需要代理时,请按需配置它支持的传输方式。