kau*_*ii8 1 python google-cloud-platform google-cloud-pubsub
我正在尝试使用相同的代码将两个不同的 google pub/sub 订阅者设置为不同的订阅。为了描绘出更好的画面,假设我有主题 1 和主题 2。然后我有订阅topic1的subscription1和订阅topic2的subscription2。然后我有订阅者 1,它链接到订阅 1,订阅者 2 链接到订阅 2。我的问题是如何在同一应用程序中使用订阅者 1 和订阅者 2。我仅针对 1 个订阅者的示例是(来自文档):
project_id = "my-project-id"
subscription_id = "subscription1"
subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path(project_id, subscription_id)
streaming_pull_future = subscriber.subscribe(subscription_path, callback=callback)
logging.info("Listening for messages on {}..\n".format(subscription_path))
# Wrap subscriber in a 'with' block to automatically call close() when done.
with subscriber:
try:
# When `timeout` is not set, result() will block indefinitely,
# unless an exception is encountered first.
streaming_pull_future.result()
except TimeoutError:
streaming_pull_future.cancel()
Run Code Online (Sandbox Code Playgroud)
如何将 subscription2 添加到其中,以便我的 python 应用程序可以从 topic1 和 topic2 获取消息?我在文档中找不到它,但如果我只是错过了它,请以某种方式告诉我!
如果您想同时接收来自两个订阅的消息,您可以创建两个 SubscriberClient 实例,每个订阅一个实例。要结合未来,您可以使用事件:
project_id = "my-project-id"
subscription_id1 = "subscription1"
subscription_id2 = "subscription2"
subscriber1 = pubsub_v1.SubscriberClient()
subscriber2 = pubsub_v1.SubscriberClient()
subscription_path1 = subscriber.subscription_path(project_id, subscription_id1)
subscription_path2 = subscriber.subscription_path(project_id, subscription_id2)
streaming_pull_future1 = subscriber1.subscribe(subscription_path1, callback=callback)
logging.info("Listening for messages on {}.".format(subscription_path1))
streaming_pull_future2 = subscriber2.subscribe(subscription_path2, callback=callback)
logging.info("Listening for messages on {}.".format(subscription_path2))
subscriber_shutdown = threading.Event()
streaming_pull_future1.add_done_callback(lambda result: subscriber_shutdown.set())
streaming_pull_future2.add_done_callback(lambda result: subscriber_shutdown.set())
# Wrap subscriber in a 'with' block to automatically call close() when done.
with subscriber1, subscriber2:
subscriber_shutdown.wait()
streaming_pull_future1.cancel()
streaming_pull_future2.cancel()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2012 次 |
| 最近记录: |