提问者:小点点

为什么GCP发布/订阅消息具有重复的message_id和publish_time值?


我正在接收来自发布/订阅订阅的消息。

下面是一条此类消息的有效负载(以原始字节为单位):

REQUEST_BODY b'{"message":{"attributes":{"one":"two"},"data":"InN0dWZmIg==","messageId":"5481363137518973","message_id":"5481363137518973","publishTime":"2022-08-24T16:39:11.08Z","publish_time":"2022-08-24T16:39:11.08Z"},"subscription":"projects/my-project/subscriptions/my-subscription-name"}\n'

注意,消息中有两个重复的值:

  • MessageIdvsmessage_id
  • PublishTimevspublish_time

现在,我知道有些语言和风格更喜欢蛇与骆驼的情况,我并没有进入正确的......

但客观上应该只有一个用于通过电线传输,而不是发送两个!

我不在乎哪个被使用,但我确实在乎我被收取这个带宽的费用!!

为什么GCP要这么做,我能关掉它吗?


共1个答案

匿名用户

我相信这是为了向后兼容。我认为message_id之前已经介绍过,然后他们将其更改为 messageId。为了不破坏某人可能使用 message_id 编写的现有代码,他们将其保留在那里并添加了 messageId。同样的事情也适用于发布时间。

如果你不能关掉它。

对定价做了一些研究。如果我理解正确,如果您的订阅者与您的酒吧/订阅主题位于同一区域,则不向您收取离开酒吧/订阅的费用。

我不确定吞吐量成本。它是对整个邮件正文(包括Google添加的属性)收费,还是仅对(您发布的数据/属性)部分收费?我想,谷歌的人可以回答这个问题。

谢谢@KamalAboul-霍森。我还在谷歌的Pub/Sub定价页面上找到了这段摘录:

消息的数据量是以下消息属性的大小之和:

    < li >编码消息正文字符串中的字节数 < li >对于每个属性,键的大小及其值 < li >时间戳为20个字节 < Li > message _ id字符串的大小 < li >附加可选字段的大小,例如与早期访问和其他限制访问API相关的字段。