7.4. 了解多播地址的内存用量
当消息路由到绑定了多播队列的地址时,内存中只有一个消息副本。每个队列仅具有对邮件的引用。因此,只有引用消息 的所有 队列发送了相关的内存后,才会释放相关的内存。
在这种情况下,如果您有一个较慢的消费者,则整个地址可能会遇到负面影响。
例如,请考虑这种情况:
- 地址有十个队列,它使用 multicast 路由类型。
- 由于消费者的速度较慢,其中一个队列不会发送其消息。其他 9 个队列继续传递消息并为空。
- 消息继续到达地址。带有较慢消费者的队列继续累积对消息的引用,从而导致代理在内存中保留消息。
- 当达到地址的最大大小时,代理将开始页面信息。
在这种情况下,由于单一的消费者,所有 队列上的消费者都会强制使用页面系统的消息,需要额外的 IO。
其他资源
- 要了解如何配置流控制,以规范代理和生产者和消费者之间的数据流,请参阅 AMQ 核心协议 JMS 文档中的 流控制。