Превышено общее время ожидания до получения ответа в GCP PubSub - PullRequest
2 голосов
/ 05 октября 2019

Я пытаюсь нажать на PubSub Topic в узле js, используя модуль @google-cloud/pubsub. Вот код Javascript

const { pubsub } = require('@google-cloud/pubsub');

class MyPubSub {

constructor(container) {

    this.publisherUser = pubsub.topic(
        this.config.pubSubToBigQueryTopicName, {
            batching: {
                "maxMessages": 1
            }
        });
}


publishToPubSub(data) {
    let MAX_RETRIES = 3;
    return new Promise(async (resolve, reject) => {
        if (!data) {
            return reject(`Invalid param ${data}`);
        }
        const dataBuffer = Buffer.from(JSON.stringify(data));
        let err, id, cx = 0;
        do {
            [err, id] = await this.utility.invoker(this.publisherUser.publish(dataBuffer));
            cx++;
        } while (err && cx <= MAX_RETRIES);
        if (err) {
            return reject(err);
        }
        return resolve(id);
    });
 }
}

module.exports = MyPubSub;

, но получаю эту ошибку

 error: {
    "stack":"Error: Retry total timeout exceeded before any response was received\n    
            at repeat (/my-service/node_modules/@google-cloud/pubsub/node_modules/google-gax/build/src/normalCalls/retries.js: 80: 31)\n  
        at Timeout.setTimeout 
        [as _onTimeout] (/my-service/node_modules/@google-cloud/pubsub/node_modules/google-gax/build/src/normalCalls/retries.js: 113: 25)\n    
        at ontimeout (timers.js: 498: 11)\n    
        at tryOnTimeout (timers.js: 323: 5)\n    
        at Timer.listOnTimeout (timers.js: 290: 5)",
      "message":"Retry total timeout exceeded before any response was received",
      "code":4
   } 

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Я решил эту проблему, добавив «google-gax»: «1.6.2» в package.json

@ grpc / grpc-js @ 0.6.x имеет проблемы с утечкой памяти. gpc-gax был необходим gpc, который, в свою очередь, требовался для pubsub, cloud-task и других модулей google.

Вот некоторые проблемы здесь и здесь

1 голос
/ 07 октября 2019

Публикация в отставке. вам не нужно реализовывать это самостоятельно. вам просто нужно настроить его.

Но основная проблема заключается в следующем: https://github.com/googleapis/nodejs-pubsub/issues/770, который все еще открыт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...