Ero*_*ini 5 java performance activemq-classic apache-camel
在我们的一个项目中,当我们使用具有大量消息(1M 或更多)的调度工具(在 ActiveMQ 配置中启用 schedulerSupport)时,我们正遭受 ActiveMQ 性能下降的困扰。该项目基于 Spring,我们也使用 Camel 进行路由管理。
我们的路由配置如下:
ScheduledMessage.AMQ_SCHEDULED_DELAY使用以下语句设置 ActiveMQ 属性:)message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, <delay>);其中<delay>根据消息时间窗口进行评估当 P 生成用于立即处理的消息(即,没有时间窗口)时,即使有大量消息(1M 或更多),系统也能很好地执行:监控队列我们可以看到它们几乎是空的(没有消息在任何队列中保持挂起) .
当 P 为延迟处理(即,使用时间窗口)生成消息时,我们会看到以下行为:
问题摘要
欢呼并提前感谢您的帮助,
爱神
从版本 5.4 开始,ActiveMQ在 ActiveMQ 消息代理中内置了一个可选的持久调度程序 activemq.apache.org/delay-and-schedule-message-delivery.html
因此,为了提高性能,请尝试将此代码添加到brokerURL您的ActiveMQConnectionFactory
例如 :
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616?jms.copyMessageOnSend=false&jms.dispatchAsync=true&jms.useAsyncSend=true");
Run Code Online (Sandbox Code Playgroud)
看一眼
http://activemq.apache.org/connection-configuration-uri.html http://activemq.apache.org/performance-tuning.html