慢速网络丢弃大消息

 常见问题解答 > 错误 > 慢速网络丢弃大消息

注意

本文仅适用于旧版本的 ActiveMQ Classic,即 5.3 和 5.4.0。从 5.4.2 开始,此问题已在以下错误中得到解决:AMQ-2511AMQ-2088.

您可能会在使用慢速链路跨网络发送大消息时遇到问题。

症状通常是网络连接断开并不断重新建立。

此问题出现的原因是 ActiveMQ Classic 消息代理会不断检查套接字上的活动,并在 TCP 套接字缓冲区中构建大消息时,空闲监视器 会超时 - 请参阅 配置线格式TCP 传输参考.
空闲监视器 使用一个活动标志,该标志仅在收到消息后更新(以防连接未处于空闲状态)。
然后监视器清除活动标志,等待超时时间并查看活动标志。如果它仍然被清除,那么我们假设连接处于非活动状态。当连接未被使用时,会发送一个保持活动消息。但是,如果连接正在使用中,因为正在发送/接收较大消息,则不会发送保持活动消息,并且不会更新活动标志。这会导致空闲超时。
理想情况下,活动标志应该在每次从网络接收几个字节时被清除……但现在它只在组装整个消息时被清除。

您可以将 wireFormat.maxInactivityDuration 属性设置为较高的值 - 或者禁用它(将其设置为零)以解决此问题。

例如,像这样配置您的网络连接

<?xml version=”1.0” encoding=”UTF-8”?>

另请参阅

ActiveMQ Classic 空闲监视器

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