我应该创建一次或定期创建Push PubSub订阅吗?

时间:2016-10-25 19:59:18

标签: publish-subscribe google-cloud-pubsub

我实现了一个使用PubSub主题来提取数据的队列。 我的计划是使用Push订阅来在发布时立即处理数据。

使用Pull Sub时,我发现很多代码模式试图在每次运行中重新创建一个Pull Subscription,以保证我们在下一个拉动周期中有一个有效的订阅。

我应该使用Push订阅吗?恕我直言,但我担心推送订阅不是永久性的,应该受到监控,以保证下次发布消息时有效的推送订阅。

推送订阅创建的优秀设计模式是什么? 我应该使用PubSub管理界面创建一次推送订阅,还是以编程方式创建(甚至重新创建)?

1 个答案:

答案 0 :(得分:3)

订阅者倾向于在启动时重新创建代码的原因可能是因为如果订阅在30天内未被检测到,则会对垃圾进行垃圾收集这一事实(请参阅"如果订阅者不是,则消息是持久的还是持久的另外,如果明确删除了一个pull订阅,那么在代码启动时重新创建它会确保pull请求不会失败。对于pull订阅者,检测存在的概念是公平的直截了当:检查对Pull的调用。

对于推送订阅者来说,它有点模棱两可。如果要删除订阅,订阅者本身将无法知道它已被删除;它只会停止接收消息。如果您确定不会手动删除订阅并且每30天至少发送一条消息,则您不必担心在启动时创建订阅,您只需通过发布/订阅管理员创建一次订阅即可接口

如果您想要提醒您确定,那么当您的订阅在一段时间内没有任何消息推送给它时,您可以Google Cloud Pub/Sub FAQ通知您(假设您发布了相当稳定的流消息) 。为" Metric Absence"添加条件并选择" Cloud Pub / Sub Subscription"作为资源类型,订阅的名称,以及"推送请求计数"作为触发指标。