扩展队列

功能 > 水平扩展 > 扩展队列

在一个代理中扩展到数万个队列相对简单 - 但需要对默认配置进行一些更改。

减少线程

在默认配置下,ActiveMQ Classic 被配置为每个队列使用一个调度线程 - 你可以使用目标策略条目上的 optimizedDispatch 属性来设置 - 请参见 配置队列

ActiveMQ Classic可以选择在内部使用线程池来控制消息的调度 - 但由于许多部署操作系统擅长处理大量线程,因此默认情况下这是关闭的。要启用此选项,请在启动脚本 INSTALL_DIR/bin/activemq 中设置 ACTIVEMQ_OPTS 以禁用专用任务运行器 - 例如:

ACTIVEMQ_OPTS="-Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=false"  

或者你可以在 /etc/activemq.conf 中设置 ACTIVEMQ_OPTS。

注意: 从 ActiveMQ Classic 5.6 开始,专用任务运行器默认情况下被禁用(参见 AMQ-3667)。

要减少用于传输的线程数量 - 请查看使用 NIO 传输 - 请参见 配置传输

这里有一个 示例,它在提供的示例代理配置文件之一中使用。

减少内存消耗

减少每个线程使用的内存 - 请参见 减少内存消耗

减少文件描述符数量

ActiveMQ Classic 默认情况下使用 amqPersistenceAdapter 用于持久消息。不幸的是,此持久化适配器(以及 kahaPersistenceAdapter)为每个队列打开一个文件描述符。在创建大量队列时,你将很快遇到操作系统的限制。

你可以选择其他 持久化选项

或者 - 在 5.3 及更高版本中尝试新的 KahaDB

增加每个进程的文件描述符限制

尝试 搜索你正在使用的操作系统

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