繁体   English   中英

未确认的消息如何存储在 GCloud pubsub 订阅中?

[英]How does an unacknowledged message gets stored in GCloud pubsub subscription?

我阅读了有关 GCloud pubsub 如何工作的大部分可用文档,但我仍然不清楚当订阅者无法确认消息时会发生什么? 我可以在订阅者设置中看到,您可以选择免费存储长达 7 天的未确认消息。 1我认为如果经过多次尝试传递仍然不成功并且消息没有到达它应该到达的地方,这应该可以工作?

如果是这种情况,那么在订阅中使用死字有什么意义?(这不是免费的) 2 如果您使用死信,但没有勾选启用消息保留的框(图 2),它是否仍然保留未确认的消息?如果是多长时间? 另外,虽然订阅也已经存储了它?

如果一条消息未被确认,则它保留在订阅的未确认消息集中。 如果没有设置死信主题,则 Cloud Pub/Sub 会尝试在消息过期时间之前重新传递此消息,如您所指出的,最长可达 7 天。

您可能出于以下几个原因想要使用死信主题:

  1. 未确认的消息可能是您的订阅者没有预料到的格式,因此导致他们崩溃。 这将影响您的订阅者处理任何消息的能力。
  2. 如果您正在使用推送订阅,则重复不确认消息会导致所有消息的传递延迟,因为服务假定端点不健康。 因此,所有消息的端到端延迟可能会增加 go。
  3. 一条您从未确认并只是留在积压中的消息可能会导致任何 Cloud Monitoring 对最旧的未确认消息发出警报。

死信主题与常规 Pub/Sub 主题没有任何不同。 当它被设置为订阅的死信主题时,仅表示 Pub/Sub 服务本身代表您发布到该主题,其中包含在传递到最大传递尝试次数后未确认的消息。 一旦发布到死信主题,Cloud Pub/Sub 会代表您确认原始订阅中的消息,这意味着它不再是该订阅中的未确认消息。

因此,消息独立于消息的原始版本并单独存储。 如果您没有 select 启用消息保留,也没有在死信主题上设置订阅,则不会保留消息。 如果这样做,则如果使用前者,则将消息存储到主题保留期限,如果使用后者,则将消息存储到订阅消息保留期限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM