Pubsub 消息立即转为死信,无需任何消耗尝试

问题描述 投票:0回答:1

我目前面临的问题是,有时当发布 pubsub 消息时,该消息会直接进入死信,而不会尝试将其传递给相应的订阅者。 投递尝试设置为 5。它甚至没有超过保留期限。

阅读google关于死信政策的文档,据说消息必须达到最大投递尝试次数才能进入死信,但在这种情况下,它会直接进入死信而不进行任何尝试。

我确定消息是否正在传递的方法是在消息到达订阅者时立即放置日志。对于这种情况,我看不到这些日志。 (或者除了登录订阅者之外还有其他方法来跟踪消息吗?)

到目前为止,我还没有找到准确重现此问题的方法,因为它仅在生产环境中的某些消息上随机发生。

google-cloud-pubsub dead-letter
1个回答
0
投票

Pub/Sub 在配置的传递尝试次数后将消息移动到死信主题。尝试传递并不意味着消息一定已到达您的订阅者手中。例如,如果沿途出现任何网络故障导致无法投递,则这将被视为一次投递尝试。

如果您使用推送订阅,则可以检查

push_request_count
指标 以查看是否返回错误。这些可能发生在负载均衡器或 Pub/Sub 与您的实际订阅者之间的其他服务中。

如果您使用拉取订阅,请查看

expired_ack_deadlines_count
等指标,看看消息是否已发送到您的订阅者客户端,但在截止日期之前未得到确认。这些过期的最后期限将被视为交付尝试。如果该指标显示非零值,则消息将发送到您的客户端,但未及时处理,可能是由于流量控制或应用程序代码丢失了传递给它的消息的跟踪。您还应该查看
nack_requests
指标
,看看您是否正在确认消息,这也算作一次传递尝试。如果此指标非零,则意味着您正在应用程序中确认消息。

© www.soinside.com 2019 - 2024. All rights reserved.