首页 > 解决方案 > Google PubSub 如何在流式拉取消息时处理搜索到的消息

问题描述

我正在尝试处理seek(timestamp)Python 返回的消息。

我使用流式拉取订阅了非搜索消息:

subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path(project_id, subscription_id)
future = subscriber.subscribe(subscription_path, callback=callback())

with subscriber:
    try:
        future.result()
    except TimeoutError:
        future.cancel()

def callback(msg):
    msg.ack()

我找到了SeekRequest对象:

https://googleapis.dev/python/pubsub/2.4.0/types.html

我期待seek()通过流式拉取再次接收重播的消息。然而,取而代之的是一个SeekResponse对象。

是否可以通过流式拉取回调将搜索到的消息转移到到达?

标签: pythongoogle-cloud-platformgoogle-cloud-pubsub

解决方案


搜索响应不包含任何消息。事实上,这是一个空洞的回应。RPC 有响应,因此您可以知道查找是否有任何错误,例如在不存在的订阅上执行。Seek 导致重播的消息以与常规传递相同的路径作为消息重新传递给订阅者,例如,再次通过流式拉取接收它们。


推荐阅读