Поделиться через


Клиентская библиотека хранилища контрольных точек Azure EventHubs для Python версии 1.1.4

использование blob-объектов хранилища

Хранилище контрольных точек Azure EventHubs используется для хранения контрольных точек при обработке событий из Центры событий Azure. Этот пакет хранилища контрольных точек работает как пакет подключаемого модуля для EventHubConsumerClient. Он использует BLOB-объект службы хранилища Azure в качестве постоянного хранилища для хранения контрольных точек и сведений о владельцах секций.

Обратите внимание, что это асинхронная библиотека. Сведения о синхронизации версии клиентской библиотеки хранилища контрольных точек Azure EventHubs см. в статье azure-eventhub-checkpointstoreblob.

Исходный код | Пакет (PyPi) | Справочная документация по | API Документация по | центрам событий AzureДокументация по службе хранилища Azure

Начало работы

Предварительные требования

  • Python 3.6 или более поздней версии.

  • Подписка Microsoft Azure: Чтобы использовать службы Azure, включая Центры событий Azure, вам потребуется подписка. Если у вас нет учетной записи Azure, вы можете зарегистрироваться для получения бесплатной пробной версии или использовать преимущества подписчика MSDN при создании учетной записи.

  • Пространство имен Центров событий с концентратором событий: Для взаимодействия с Центры событий Azure вам также потребуется пространство имен и концентратор событий. Если вы не знакомы с созданием ресурсов Azure, вам может потребоваться выполнить пошаговые инструкции по созданию концентратора событий с помощью портал Azure. Здесь также можно найти подробные инструкции по использованию Azure CLI, Azure PowerShell или шаблонов Azure Resource Manager (ARM) для создания концентратора событий.

  • Учетная запись хранения Azure: Вам потребуется учетная запись хранения Azure и создать контейнер блоков Хранилище BLOB-объектов Azure для хранения данных контрольных точек с большими двоичными объектами. Вы можете выполнить инструкции из руководства по созданию учетной записи хранения блочных BLOB-объектов Azure.

Установка пакета

$ pip install azure-eventhub-checkpointstoreblob-aio

Основные понятия

Назначение контрольных точек

Создание контрольных точек — это процесс, с помощью которого модули чтения помечают или фиксируют свое положение в последовательности событий секции. Создание контрольных точек является ответственностью потребителя и выполняется для каждой секции в пределах группы потребителей. Это означает, что для каждой группы потребителей модуль чтения каждой секции должен хранить свое текущее положение в потоке событий и может сообщать службе, когда он считает поток данных завершенным. Если модуль чтения отключается от секции, при повторном подключении он приступает к чтению данных с контрольной точки, которая ранее была отправлена последним модулем чтения этой секции в этой группе потребителей. При подключении модуль чтения передает это смещение в концентратор событий, чтобы указать место, с которого следует начинать чтение. Таким образом, можно использовать контрольные точки как для маркировки событий как "завершенных" подчиненными приложениями, так и для обеспечения устойчивости в случае отработки отказа между модулями чтения, работающими на разных компьютерах. Вы можете вернуться к предыдущим данным, указав более низкое значение смещения по отношению к этому процессу создания контрольных точек. В рамках такого подхода при создании контрольных точек вы обеспечиваете отказоустойчивость и воспроизведение потока событий.

Смещения порядковых & номеров

Оба порядковых номера смещения & относятся к позиции события в секции. Их можно рассматривать как курсор на стороне клиента. Смещение представляет собой байт-нумерацию события. Номер смещения или последовательности позволяет потребителю события (средству чтения) указать точку в потоке событий, с которой нужно начать чтение событий. Вы можете указать метку времени таким образом, чтобы получать события, помещенные в очередь, только после заданной метки времени. Потребители ответственны за хранение своих собственных значений смещения вне службы "Центры событий". В секции каждое событие включает смещение, порядковый номер и метку времени, когда оно было помещено в очередь.

Примеры

Создайте EventHubConsumerClient.

Самый простой EventHubConsumerClient способ создать — использовать строку подключения.

from azure.eventhub.aio import EventHubConsumerClient
eventhub_client = EventHubConsumerClient.from_connection_string("my_eventhub_namespace_connection_string", "my_consumer_group", eventhub_name="my_eventhub")

Дополнительные сведения о других способах создания EventHubConsumerClientсм. в библиотеке EventHubs .

Использование событий с помощью контрольной BlobCheckpointStore точки для выполнения

import asyncio

from azure.eventhub.aio import EventHubConsumerClient
from azure.eventhub.extensions.checkpointstoreblobaio import BlobCheckpointStore

connection_str = '<< CONNECTION STRING FOR THE EVENT HUBS NAMESPACE >>'
consumer_group = '<< CONSUMER GROUP >>'
eventhub_name = '<< NAME OF THE EVENT HUB >>'
storage_connection_str = '<< CONNECTION STRING OF THE STORAGE >>'
container_name = '<< STORAGE CONTAINER NAME>>'

async def on_event(partition_context, event):
    # Put your code here.
    await partition_context.update_checkpoint(event)  # Or update_checkpoint every N events for better performance.

async def main():
    checkpoint_store = BlobCheckpointStore.from_connection_string(
        storage_connection_str,
        container_name
    )
    client = EventHubConsumerClient.from_connection_string(
        connection_str,
        consumer_group,
        eventhub_name=eventhub_name,
        checkpoint_store=checkpoint_store,
    )

    async with client:
        await client.receive(on_event)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

Использование BlobCheckpointStore с другой версией API службы хранилища Azure

Некоторые среды имеют разные версии API службы хранилища Azure. BlobCheckpointStore по умолчанию использует API службы хранилища версии 2019-07-07. Чтобы использовать его для другой версии, укажите api_version при создании BlobCheckpointStore объекта .

Устранение неполадок

Общие сведения

Включение ведения журнала поможет устранить неполадки при съемке.

Ведение журнала

  • Включите azure.eventhub.extensions.checkpointstoreblobaio средство ведения журнала для сбора трассировок из библиотеки.
  • Включите azure.eventhub средство ведения журнала для сбора трассировок из основной библиотеки azure-eventhub.
  • Включите azure.eventhub.extensions.checkpointstoreblobaio._vendor.storage средство ведения журнала для сбора трассировок из библиотеки BLOB-объектов службы хранилища Azure.
  • Включите uamqp средство ведения журнала для сбора трассировок из базовой библиотеки uAMQP.
  • Включите трассировку на уровне кадра AMQP, задав logging_enable=True при создании клиента.

Дальнейшие действия

Больше примеров кода

Начните работу с нашими примерами асинхронного хранилища контрольных точек EventHubs.

Документация

Справочная документация доступна здесь.

Отзывы

Если вы столкнулись с ошибками или у вас есть предложения, сообщите о проблеме в разделе Проблемы проекта.

Участие

На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Для получения подробных сведений посетите веб-страницу https://cla.microsoft.com.

При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Будет достаточно выполнить их один раз для всех репозиториев, поддерживающих соглашение CLA.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.

Просмотры