首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google /Sub在低消息吞吐量上触发高延迟

Google /Sub在低消息吞吐量上触发高延迟
EN

Stack Overflow用户
提问于 2020-03-23 17:17:23
回答 1查看 2K关注 0票数 0

我正在运行项目,该项目将消息发布到PubSub主题并触发后台云功能。

我读到,在大量的消息中,它执行得很好,但是对于每秒几百条甚至几十条消息这样的较小数量的消息,Pub/Sub可能会产生很高的延迟。

发布单个消息的代码示例:

代码语言:javascript
复制
 const {PubSub} = require('@google-cloud/pubsub');

 const pubSubClient = new PubSub();

 async function publishMessage() {
    const topicName = 'my-topic';
    const dataBuffer = Buffer.from(data);

    const messageId = await pubSubClient.topic(topicName).publish(dataBuffer);
    console.log(`Message ${messageId} published.`);
 }

 publishMessage().catch(console.error);

由PubSub触发的代码示例函数:

代码语言:javascript
复制
exports.subscribe = async (message) => {
  const name = message.data
    ? Buffer.from(message.data, 'base64').toString()
    : 'World';

  console.log(`Hello, ${name}!`);
}

云功能环境详细信息:

节点:8

google-cloud/pubsub: 1.6.0

问题是,当使用消息吞吐量低(例如,每秒一个请求)的PubSub时,它有时会遇到困难,并且表现出难以置信的高延迟(高达7-9 s或更高的延迟)。

有没有一种方法或方法可以让PubSub在每次(、50 Is、或更小的延迟)时表现良好,即使只有少量的传入消息?

EN

回答 1

Stack Overflow用户

发布于 2020-03-24 00:16:51

如果您总是发布到相同的主题,那么最好保持从pubSubClient.topic(topicName)返回的对象并重用它,无论您有少量消息还是大量消息。如果希望最小化延迟,还需要设置batching设置的batching属性。默认情况下,这是10 is。因为现在有了代码,这意味着每个发布都等待10 As来发送消息,希望能够填充批处理。假设您通过对每个发布的topic调用创建一个新的发布者,则保证总是等待至少10 to。您可以在调用topic时设置它

代码语言:javascript
复制
const publisher = pubSubClient.topic(topicName, {
      batching: {
        maxMessages: 100,
        maxMilliseconds: 1,
      },
    });

如果在重用了从pubSubClient.topic(topicName)返回的对象并更改了maxMilliseconds之后,您仍然会遇到这样的延迟,那么您应该联系Google云支持,以便他们可以查看您正在使用的特定项目和主题,因为这种延迟是绝对不需要的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60818463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档