У меня есть сценарий использования, в котором я хочу читать сообщения в Pubsub без подтверждения сообщений. Мне нужна помощь в том, как исключить возможность «дублирования сообщений», которые останутся в хранилище Pubsub, если я не подтвердю доставленное сообщение.
Решения, о которых я подумал:
- Сохраните извлеченные сообщения в Datastore и посмотрите, совпадают ли они.
- Сохраняйте извлеченные сообщения во время выполнения и проверяйте, является ли мое сообщение дубликатом O (n), сложность времени и пространственная сложность O (n).
- Сохраните извлеченные сообщения в файле и сравните новые входящие сообщения из сообщений в файле.
- Использование потока данных и исключение возможности (наименее ожидаемый)
Я вижу, что в Pubsub нет функции, подобной смещению, которая, по-моему, похожа на Kafka.
Какой наилучший подход вы бы предложили в этом вопросе / или любой другой альтернативный подход, который я могу использовать?
Я использую Python google-cloud-pubsub_v1 для создания клиента Python и получения сообщений из Pubsub.
Я делюсь кодом, который является логикой для извлечения данных
subscription_path = subscriber.subscription_path(
project_id, subscription_name)
NUM_MESSAGES = 3
# The subscriber pulls a specific number of messages.
response = subscriber.pull(subscription_path, max_messages=NUM_MESSAGES)
for received_message in response.received_messages:
print(received_message.message.data)