Dav*_*542 2 python google-cloud-platform google-cloud-pubsub
从客户那里,我有以下代码:
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project_id, topic_name)
future = publisher.publish(topic_path, data=json.dumps(dict(op='create_master', review_id=1273612)))
Run Code Online (Sandbox Code Playgroud)
有没有办法检查该项目何时完成处理?如果是的话,那该怎么办呢?现在,我无法知道某人是否“工作”。
要知道消息是否已成功发布,您需要查看未来的结果。首选方法是异步执行此操作:
def callback(future):
try:
print(future.result()) # future.result() is the message ID for the published message.
except Exception as e:
print("Error publishing: " + str(e))
future = publisher.publish(topic_path, data=json.dumps(dict(op='create_master', review_id=1273612)))
future.add_done_callback(callback)
Run Code Online (Sandbox Code Playgroud)
如果需要,您也可以同步执行此操作。调用result()future 将被阻塞,直到发布结果可用:
future = publisher.publish(topic_path, data=json.dumps(dict(op='create_master', review_id=1273612)))
try:
print(future.result()) # future.result() is the message ID for the published message.
except Exception as e:
print("Error publishing: " + str(e))
Run Code Online (Sandbox Code Playgroud)
没有内置方法可以知道订阅者何时完成消息处理。要求发布者知道订阅者何时处理了消息是一种反模式;发布者和订阅者旨在分隔彼此不直接了解的实体。话虽这么说,如果您需要此类信息,最好的方法是设置第二个主题,您的原始订阅者在完成处理后发布消息,您的原始发布者可以订阅该消息,以便知道处理何时完成做完了。
| 归档时间: |
|
| 查看次数: |
1940 次 |
| 最近记录: |