对于使用 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 请求。当这条认证路径同样需要代理时,请按需配置它支持的传输方式。

相关文章