[英]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.