Python+Azure存储队列接收消息()

2024-03-29 13:52:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用azure队列存储获取azure函数访问同一存储帐户上的blob的blob路径。(事实证明,我或多或少手动创建了一个blob存储Azure函数)

我使用QueueClient类从队列中获取消息,有两种方法: Azure Python Documentation

  1. 接收信息(**kwargs)
  2. 查看消息(最大消息数=无,**kwargs)

我希望能够水平扩展此函数,因此每次触发时(我已将其设置为从Azure Logic应用程序触发的HTTP函数),它都会捕获队列中的第一条消息,并且仅捕获第一条消息,一旦检索到,就会删除所述消息

我的问题是peek不会使其不可见,也不会返回pop_收据以供以后删除。并且receive没有max_messages的参数,因此我只能接收一条消息

有人知道如何绕过这个路障吗


Tags: 方法函数路径信息消息队列documentation水平
2条回答

@Robert

要从队列中仅获取一条消息,可以使用以下代码:

pages = queue.receive_messages(visibility_timeout=30, messages_per_page=1).by_page()
page = next(pages)
msg = next(page)
print(msg)

receive_messages()的文档错误

有关更多信息,请参见this

您可以通过将messages_per_page参数传递给receive_messages来尝试批量接收消息。从这个^{}

        # Receive messages by batch
        messages = queue.receive_messages(messages_per_page=5)
        for msg_batch in messages.by_page():
            for msg in msg_batch:
                print(msg.content)
                queue.delete_message(msg)

相关问题 更多 >