Python-从Azure服务总线接收主题非常慢

Python-从Azure服务总线接收主题非常慢,python,azure,servicebus,Python,Azure,Servicebus,我正在玩弄家庭自动化,我计划使用Azure服务总线作为我的“核心”来处理消息。在.NETSDK中,一切工作都非常完美,速度也足够快(发送+接收的时间为毫秒)。然而,我现在使用Python的“azure.servicebus”模块(Raspberry Pi上的Debian),接收订阅消息调用远远不够快。它在接近瞬间到落后一分钟之间变化 我的代码如下: from azure.servicebus import ServiceBusService, Message, Queue bus_service

我正在玩弄家庭自动化,我计划使用Azure服务总线作为我的“核心”来处理消息。在.NETSDK中,一切工作都非常完美,速度也足够快(发送+接收的时间为毫秒)。然而,我现在使用Python的“azure.servicebus”模块(Raspberry Pi上的Debian),接收订阅消息调用远远不够快。它在接近瞬间到落后一分钟之间变化

我的代码如下:

from azure.servicebus import ServiceBusService, Message, Queue
bus_service = ServiceBusService(
    service_namespace='mynamespace',
    shared_access_key_name='Listener1',
    shared_access_key_value='...')
msg = bus_service.receive_subscription_message('messages', 'ListenerTest.py', peek_lock=True)
msg.delete()
我曾玩弄过peek_lock True和False,但行为是一样的


还有其他人能够获得这种稳定/接近即时的消息吗?

请确保订阅中确实有消息,还请注意.NET SDK默认使用特定于服务总线的协议而不是http,但Python SDK使用http轮询(基本上每隔一段时间检查订阅中是否有消息)。我们可以在以下网址找到简要信息:

ServiceBus队列是存储队列的替代品,在需要更高级的消息传递功能(更大的消息大小、消息顺序、单次操作破坏性读取、计划传递)的情况下,它可能非常有用。
使用推式传递(使用长轮询)。

根据我的理解,这可能解释了为什么您会看到即时或一分钟内收到的消息。根据您描述的行为,您可能希望使用AMQP,它基于双向TCP,因此不需要轮询。要使用AMQP,您可能需要利用标准的Proton Python库,我建议您查看示例。但请注意文章中的提示:

请注意,在撰写本文时,Proton-C中的SSL支持是 仅适用于Linux操作系统。因为微软Azure 服务总线需要使用SSL、质子-C(以及 绑定)只能用于从访问Microsoft Azure服务总线 现在是Linux。在Windows上启用带SSL的Proton-C的工作如下 正在进行中,请经常查看更新


我当前在接收来自订阅的消息时遇到了相同的问题,其中相应的主题是在启用分区的情况下创建的。然后我创建了一个没有分区的新主题,一切都按照预期开始工作。我正试图找出分区是问题的原因。请参阅了解如何通过利用服务总线的v7.0.0来接收消息,它有几个性能改进。