![](/img/trans.png)
[英]How to limit Google Pub/Sub delivery attempts by forwarding to a dead-letter topic?
[英]PubSub Maximum delivery attempts & Dead letter topic
5月1日快樂,
我正在做一個簡單的 POC 來利用 PusSub 的死信主題功能。 我將訂閱配置為在 20 次最大傳遞嘗試后將消息重新發布到單獨的死信主題(以下是使用的訂閱拉取代碼和示例消息)。 注意:我使用 Cloud Console 配置了訂閱。
問題/挑戰:即使經過 36 次傳遞嘗試,測試消息仍然沒有重新發布到死信主題。 根據文檔,我假設我的測試消息將重新發布到死信主題,並且不應在 20 次嘗試后傳遞。 我錯過了什么?
拉取訂閱碼
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.