我的生产者阻塞

 常见问题解答 > 错误 > 我的生产者阻塞

如果我的生产者阻塞发送消息,我该怎么办?

这与 生产者流量控制 相关。

Active 4.x

在 ActiveMQ Classic 4.x 中,所有传输中的消息都保存在内存中。如果您有一个缓慢的消费者,为了避免耗尽 JVM 内存并出现内存不足错误,ActiveMQ Classic 对其将保存的传输中消息数量设置了可配置的限制。达到限制后,生产者将被减速/阻塞。

快速修复只是在 XML 配置 中的 usageManager 中增加设置。与 ActiveMQ Classic 一起提供的默认设置非常低,只有 20MB 的 RAM,因此尝试将其设置为更大的值,例如 512MB。

另一种方法是在不同的目的地以及生产者与消费者之间设置单独的 usageManager 限制。

您可能还想使用 JMX 支持或 Web 控制台 来查看正在使用的目的地以及您拥有的生产者和消费者,以了解发生了什么。

Active 5.x 及更高版本

从 ActiveMQ Classic 5.x 开始,支持 消息游标,默认情况下它们将消息从内存移到磁盘。因此,除非您填满了用于消息存储的最大分配磁盘空间(通常比内存大一个数量级),否则您不会遇到此问题。

另请参阅

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛标志和 Apache ActiveMQ 项目标志是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。