7.4. 了解多播地址的内存用量
当消息路由到绑定了多播队列的地址时,在内存中只有一个消息副本。每个队列仅具有对邮件的引用。因此,仅在引用消息 的所有 队列后发布相关的内存。
在这种情形中,如果您有一个较慢的使用者,整个地址可能会给性能造成负面影响。
例如,考虑这种情况:
- 地址具有十个队列,这些队列使用多播路由类型。
- 由于使用者缓慢,其中一个队列不会向其消息发送。其他 9 个队列继续传递消息并为空。
- 消息继续到达地址。缓慢的消费者的队列会继续积累对消息的引用,从而导致代理在内存中保存消息。
- 当达到最大地址大小时,代理将启动到页面信息。
在这种情况下,因为一个较慢的消费者 都 强制使用来自页面系统的消息,这需要其他 IO。
其他资源
- 要了解如何配置流控制,以规范代理和制作者与消费者之间的数据流,请参阅 AMQ Core Protocol JMS 文档中的 流控制。