如何根据队列中未确认消息的数量限制发布到GCP pub/sub中的主题



我有一个主题,它附加到一个侦听器服务,该服务触发基于微服务的处理管道。我想限制用户发布关于这个主题的新消息,以防止我的系统在某个限制后窒息。例如,如果主题中未确认的消息数量已经大于或等于10000,那么我想给出一个错误的输入异常或限制用户淹没我的队列的内容。

有线索吗?此外,如果有人知道Azure服务总线中是否有此功能,这将是一个很大的帮助?

因为订阅者已经有大量积压的消息要处理而停止发布将无法实现使用Pub/Sub作为范例的目的。整个目标是将发布者和订阅者解耦,这样发布者的行为就不需要根据订阅者使用消息的能力进行更改。

考虑这样一种情况:您对同一主题有多个订阅,其中一个订阅建立了大量积压工作,但另一个没有。在这种情况下,发布者是否不能发布?为什么快速订阅的订阅者不能接收消息?此外,如果您的发布者返回错误,它会如何处理这些消息?放下它们?在本地登记?Pub/Sub的全部目的是处理这些案件,这样你就不必这么做了。

如果您的订阅者需要限制他们一次处理的消息数量,那么您应该使用订阅者客户端库流控制机制,通过限制未处理消息和/或字节的最大数量来防止他们不堪重负。然后,他们可以按照自己能够处理的速率处理消息。如果他们根本无法跟上发布负载,那么您要么需要启用更多的订阅客户端,要么决定旧邮件可以过期,并相应地设置订阅邮件保留时间。

最新更新