簡體   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