繁体   English   中英

PubSub 最大传递尝试次数和死信主题

[英]PubSub Maximum delivery attempts & Dead letter topic

5月1日快乐,

我正在做一个简单的 POC 来利用 PusSub 的死信主题功能。 我将订阅配置为在 20 次最大传递尝试后将消息重新发布到单独的死信主题(以下是使用的订阅拉取代码和示例消息)。 死信主题配置 注意:我使用 Cloud Console 配置了订阅。

问题/挑战:即使经过 36 次传递尝试,测试消息仍然没有重新发布到死信主题。 根据文档,我假设我的测试消息将重新发布到死信主题,并且不应在 20 次尝试后传递。 我错过了什么? 36 次尝试,即使在我每次都吃不饱之后

拉取订阅码

 const {PubSub} = require('@google-cloud/pubsub'); var moment = require('moment'); process.env['GOOGLE_APPLICATION_CREDENTIALS'] = 'abcxyz.json'; const pubSubClient = new PubSub(); const timeout = 100; async function listenWithCustomAttributes() { const subscription = pubSubClient.subscription("projects/random-1234/subscriptions/testsub"); // Create an event handler to handle messages const messageHandler = (message) => { const datetime = moment().format('mmmm do yyyy, h:mm:ss a'); console.log(`${datetime}::: ${message.id}:`); console.log(`${message.data}`); console.log(`Delivery Attempt: ${message.deliveryAttempt}`); console.log(`custom Attributes: ${JSON.stringify(message.attributes)}`); console.log('\n'); //NACK for re-delivery message.nack(); }; subscription.on('message', messageHandler); setTimeout(() => { subscription.removeListener('message', messageHandler); }, timeout * 1000000); } listenWithCustomAttributes();

示例 PubSub 消息

 const message = { "event": "First", "message": "HELLOWORLD,;!!", };

我终于能够解决这个问题。

根据文档“如果您使用 Cloud Console 配置订阅,则会自动授予角色。” 但是,这似乎不再有效。 我们需要在订阅控制台的“DEAD LETTERING”(OVERVIEW 旁边)中授予所需的发布者和订阅者角色,或者按照文档中的说明添加 iam 策略。 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM