【问题标题】:Message drops in PubSubPubSub 中的消息丢弃
【发布时间】:2017-10-26 12:39:36
【问题描述】:

我从云函数向 pubsub 发送消息,并使用 PubsubIO 从全局窗口以 Java 接收它们。有时,从 Cloud Function 传递的消息很少在从 Java 中提取时不会出现(在我的情况下,200 条中有 4 条被遗漏了)。

我的云功能:

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

exports.messagePublisher= function(event,callback) {
  const file = event.data;

  function publishMessage(){
    console.log('Publishing message to Scheduler: '+file.name);
    //Get Topic
    const topic = pubsub.topic('projects/analytics-and-presentation/topics/newTestTopic');

    var publisher = topic.publisher();

    var message = "sampleText";

    // Publishes a message
    publisher.publish(new Buffer.from(message), (err) => {
      if (err) {
        console.log('Error occurred',err); publishMessge();
      } else {
        console.log('Message published');
      }
    });
  }

  if (file.resourceState === 'exists' && file.name) {
    publishMessage();
  }
  callback();
};

我应该怎么做才能确保没有任何消息被丢弃?

【问题讨论】:

    标签: google-cloud-dataflow google-cloud-functions google-cloud-pubsub


    【解决方案1】:

    消息被丢弃很可能是因为它们被声明为延迟数据。请参阅编程指南中的窗口和触发部分,特别是 Watermarks and late dataHandling late dataDefault trigger (我强烈建议从头到尾阅读这些部分,而不仅仅是我链接的子部分)

    您可以将您的窗口/触发策略配置为更宽松地考虑哪些是迟到的数据,或者根本不丢弃迟到的数据。

    您可能还需要配置 PubsubIO 分配事件时间时间戳的方式。见javadoc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      相关资源
      最近更新 更多