从 pubsub 中提取消息而不会超时

Posted

技术标签:

【中文标题】从 pubsub 中提取消息而不会超时【英文标题】:Pull messages from pubsub without timeout 【发布时间】:2020-12-25 16:21:57 【问题描述】:

我正在尝试实现this,到目前为止,对于每个示例,Google 都有一个超时功能,可在 1 分钟后停止侦听消息。

  setTimeout(() => 
    subscription.removeListener('message', messageHandler);
    console.log(`$messageCount message(s) received.`);
  , timeout * 1000)

假设我想永远收听新消息。没有超时功能的缺点是什么?还是无限循环更好?

我在本地进行测试,这没关系,但我想知道在生产模式下会发生什么。是的,我想拉消息。

【问题讨论】:

【参考方案1】:

超时设置为删除消息侦听器。如果你想听的不明确,去掉这4行就行了!

但是,问问自己“如何停止优雅地倾听?”在计算引擎抢占、应用或虚拟机停止的情况下,卸载实例(用于 Cloud Run、Cloud Functions 和 App Engine)。

这里的触发器是超时。您可以想象一个 while 循环并检查一个布尔值以继续或停止。

【讨论】:

以上是关于从 pubsub 中提取消息而不会超时的主要内容,如果未能解决你的问题,请参考以下文章

GCP PubSub Spring Boot 重复提取消息

Pubsub.pull 请求无法正常工作 - 去吧

Google PubSub 如何在流式拉取消息时处理搜索到的消息

PubSub 主题不从云功能中提取数据

在 MessageReciever 之外确认 pubSub 消息

pubSubToBq 从消息中获取属性