Python + Azure Очередь хранения receive_messages () - PullRequest
1 голос
/ 21 апреля 2020

Я использую хранилище очередей azure, чтобы получить пути BLOB-объектов для функции Azure для доступа к BLOB-объектам в той же учетной записи хранения. (Оказывается, я более или менее вручную создал функцию хранилища BLOB-объектов Azure).

Я использую класс QueueClient для получения сообщений из очереди, и есть два метода: Azure Python Документация

  1. receive_messages ( ** kwargs)
  2. peek_messages (max_messages = None, ** kwargs)

Я хотел бы иметь возможность масштабировать эту функцию по горизонтали, поэтому каждый раз, когда она срабатывает (я установить его как функцию HTTP, запускаемую из Azure Logi c приложения), он захватывает ПЕРВОЕ сообщение в очереди и только первое, а после получения удаляет указанное сообщение.

Моя проблема в том, что peek не делает его невидимым и не возвращает pop_receipt для удаления позже. И в Receive нет параметра для max_messages, поэтому я могу принять одно и только одно сообщение.

Кто-нибудь знает, как обойти это препятствие?

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете попробовать получать сообщения в пакете, передав messages_per_page аргумент receive_messages. Из этого link:

        # 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...