我在 Google Cloud Pub/Sub 上收到重复的 MessageID。请注意,我的有效负载又名数据字段在测试期间是相同的,但这在理想情况下不会导致重复的 MessageID。请让我知道我下面的代码有什么问题:
const publish = (topicName, payload) => {
const dataBuffer = Buffer.from(JSON.stringify(payload));
return new Promise((resolve, reject) => {
pubsub
.topic(topicName)
.publisher()
.publish(dataBuffer)
.then(result => {
const messageId = result[0];
console.log(`${messageId} published`);
resolve(messageId);
})
.catch(err => {
console.error(err);
reject(err);
});
});
};
您的代码将两个不同库中可用的发布调用混为一谈。publish
您正在使用的调用来自更高性能的 Publisher 库。在这个库中,您不会返回结果数组;你会得到一个单一的消息 ID。因此,当您这样做时messageId = result[0]
,您将获得 messageID 的第一个字符。如果您只是打印出所有的result
,您会看到它们对于每个发布调用都是不同的。
结果数组来自PublisherClient 发布方法。这个方法接受一个原始数据PublishRequest
并返回一个响应列表,当你需要索引你得到的响应时。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句