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 リクエストを発行することがあります。その認証経路でもプロキシが必要なときは、対応するトランスポートを必要に応じて設定してください。