【问题标题】:Error in pubsub subscriber: Max message size exceededpubsub 订阅者出错:超出最大消息大小
【发布时间】:2017-06-23 18:45:27
【问题描述】:

我正在为我的应用程序使用 Google Cloud Pubsub。 pubsub 主题的订阅者是用 Javascript 编写的,并在 Nodejs 上运行。我正在使用 google 提供的官方 pubsub 客户端。

代码如下:

var topic = gcloud.pubsub({projectId: 'myProjectId'}).topic('topicName');
var pubsub = gcloud.pubsub({projectId: 'myProjectId'});
var sub = pubsub.subscription('subName', {topic: topic});
sub.on('error', function(err) { console.error(err); });
sub.on('message', messageHandler);

我的错误处理程序不断被此错误消息触发:

Error: Max message size exceeded

首先,订阅者收到一条非常奇怪的消息。如果消息太大,在发布时应该被拒绝。

更重要的是,我的订阅者似乎在某个时候死了。它会一直处理这些消息,直到出现大约 80 个错误,然后才停止。消息处理程序再也不会被调用。

我该如何解决这个问题?

将 SDK 版本更新为 0.46.1。新的错误信息:

Received message larger than max (10406691 vs. 4194304)

【问题讨论】:

    标签: javascript node.js gcloud google-cloud-pubsub


    【解决方案1】:

    这可能是 Node.js Pub/Sub 客户端库中的一个错误,其中 max_receive_message_length 属性未在 gRPC 通道上设置。在这种情况下,“消息大小”不是指发布到 Pub/Sub 的消息的大小(根据maximum publish request size,最多可达 ~10MB),而是指响应中允许的消息大小发送到 gRPC 中的请求。我建议在Google Cloud Platform Node.js repository 中创建一个问题。

    与此同时,您可以尝试将subscription 上的 maxInProgress 属性设置为较小的数字,这将迫使订阅者拉取较小批量的消息,从而使响应变小。目前,如果未指定,单个响应中的最大消息数默认为 1000。但是,如果您的消息很大,这可能无济于事。

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 2017-04-30
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 2022-06-11
      • 2014-02-01
      相关资源
      最近更新 更多