![](/img/trans.png)
[英]Google Cloud PubSub: Not sending/receiving all messages from Cloud Functions
[英]Google Cloud PubSub messages not processed by callback
我正在嘗試使用Google PubSub在兩個服務之間傳遞和接收消息。 但是,發送的某些消息似乎是隨機丟棄的,並且訂閱者的回調方法未對其進行處理。
發送消息時,約有一半的消息由回調方法處理。 對於另一半,該回調方法似乎根本沒有被調用(不記錄任何信息)。 但是,消息仍然從主題中消失,並且不會重新發送。
用於啟動訂閱服務器的代碼:
logger = logging.getLogger(LOGGER_NAME)
logger.info('Starting the pubsub subscriber')
subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path(GOOGLE_CLOUD_PROJECT, SUBSCRIPTION_NAME)
subscriber.subscribe(subscription_path, callback=callback)
while True:
try:
sleep(60)
except Exception as e:
// Log exception
回調方法:
def callback(message):
logger = logging.getLogger(LOGGER_NAME)
logger.info(f'Recieved callback with message: {message}', extra = {'callback_message': message} )
// Process message
該錯誤似乎是在訂戶側。 消息是從發布者發送的,如果訂閱者未連接到主題,則消息不會消失。
我嘗試使用流控制來控制訂戶檢索到的消息數,但似乎沒有任何效果。
可以在不調用回調方法的情況下處理消息嗎? 還有其他一些原因導致消息可能從主題中消失的原因嗎?
編輯: 原來另一個服務正在讀取相同的訂閱,處理丟失的消息。
我知道您找到了問題的答案,但是我認為列出一些調試此類問題的有用步驟是值得的:
subscription/oldest_unacked_message_age
和subscription/num_undelivered_messages
通過為Stackdriver 。 如果在檢查完所有這些信息后仍不確定消息發生了什么,最好與支持人員聯系,提供項目名稱和訂閱名稱以及您認為未傳遞的任何消息的ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.