使用WebSocket和代理访问Azure EventHub

rkttyhzu  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(191)

我正在尝试访问Azure EvenHub,但我的网络使我使用代理,并且仅允许通过https(端口443)进行连接基于https://learn.microsoft.com/en-us/python/api/azure-eventhub/azure.eventhub.aio.eventhubproducerclient?view=azure-python
我添加了代理配置和TransportType.AmqpOverWebsocket参数,我的Producer如下所示:

async def run():
    producer = EventHubProducerClient.from_connection_string(
        "Endpoint=sb://my_eh.servicebus.windows.net/;SharedAccessKeyName=eh-sender;SharedAccessKey=MFGf5MX6Mdummykey=",
        eventhub_name="my_eh",
        auth_timeout=180,
        http_proxy=HTTP_PROXY,
        transport_type=TransportType.AmqpOverWebsocket,
    )

我得到一个错误:

File "/usr/local/lib64/python3.9/site-packages/uamqp/authentication/cbs_auth_async.py", line 74, in create_authenticator_async
    raise errors.AMQPConnectionError(
uamqp.errors.AMQPConnectionError: Unable to open authentication session on connection b'EHProducer-a1cc5f12-96a1-4c29-ae54-70aafacd3097'.
Please confirm target hostname exists: b'my_eh.servicebus.windows.net'

我不知道可能是什么问题。它可能与此有关吗?https://github.com/Azure/azure-event-hubs-c/issues/50#issuecomment-501437753

xuo3flqw

xuo3flqw1#

您应该能够设置SDK用来访问EventHub的代理。下面是一个sample,它向您展示了如何使用代理信息设置HTTP_PROXY字典。在后台,当代理被传入时,它会自动通过websockets。
正如@BrunoLucasAzure建议的那样,检查代理上的端口本身将是一个很好的检查,因为根据错误消息,它看起来像是通过了代理,无法解析端点。

相关问题