首页 > 解决方案 > Python Azure服务总线没有从队列中检索消息

问题描述

我正在尝试使用 python azure 服务总线客户端不断检查队列中是否有包含进程 ID 的新消息。出于某种原因,每次我初始化 azure 服务总线客户端时,它都会运行几秒钟,然后输出以下消息: Process finished with exit code -1073741819 (0xC0000005)

. 我已经仔细检查了我的队列名称和所有内容,但我无法理解问题所在。

with servicebus_client:
    receiver = servicebus_client.get_queue_receiver( queue_name=CALC_REQUEST_QUEUE)
    print( "state 1" )
    with receiver:
        print("state")
        for msg in receiver:
            calc_request = json.loads( str( msg ) )
            processing_identifier = calc_request.get( 'processingIdentifier', None )
            print( "Received: " + str( processing_identifier ) )
            calc_config = fetch_calc_configuration( processing_identifier )
            calc_response = invoke_capsule_summary_processing(calc_config)

标签: pythonazureazureservicebus

解决方案


如果您只想连续从某个队列中提取新消息,请尝试以下操作:

import asyncio
from asyncio.tasks import sleep
from azure.servicebus.aio import ServiceBusClient

CONNECTION_STR = ''
QUEUE_NAME = ''


async def main():
    servicebus_client = ServiceBusClient.from_connection_string(conn_str=CONNECTION_STR)

    async with servicebus_client:
        receiver = servicebus_client.get_queue_receiver(queue_name=QUEUE_NAME)
        async with receiver:
            received_msgs = await receiver.receive_messages(max_message_count=10, max_wait_time=5)
            for msg in received_msgs:
                print(str(msg))
                await receiver.complete_message(msg)

loop = asyncio.get_event_loop()
while True : 
    #each 10 seconds to pull messages from queue.
    sleep(10)  
    print('pull messages...')
    loop.run_until_complete(main())

结果: 在此处输入图像描述


推荐阅读