在我们的一个项目中,当我们使用具有大量消息(1M 或更多)的调度工具(在 ActiveMQ 配置中启用 schedulerSupport)时,我们正遭受 ActiveMQ 性能下降的困扰。该项目基于 Spring,我们也使用 Camel 进行路由管理。
我们的路由配置如下:
ScheduledMessage.AMQ_SCHEDULED_DELAY使用以下语句设置 ActiveMQ 属性:)message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, <delay>);其中<delay>根据消息时间窗口进行评估当 P 生成用于立即处理的消息(即,没有时间窗口)时,即使有大量消息(1M 或更多),系统也能很好地执行:监控队列我们可以看到它们几乎是空的(没有消息在任何队列中保持挂起) .
当 P 为延迟处理(即,使用时间窗口)生成消息时,我们会看到以下行为: