我最近几天一直在浏览论坛,并尝试了几乎所有我能找到的东西,但没有运气。
情况是:在我们的Java Web应用程序中,我们有ActiveMQ 5.7(我知道它已经很老了,最终我们将升级到更新的版本 - 但由于某些原因,它现在不可能)。我们只有一个经纪人和多个消费者。
当我启动服务器时(我已尝试为2,3,4和更多服务器执行此操作)一切正常。服务器相互通信,即时消耗QUEUE消息。但是,当我让服务器空闲时(例如最终要抓住一些睡眠;))就不再是这样了。消息卡在数据库中,不会消耗掉。将它们交付的唯一选择是重新启动服务器。
我的部分配置(我们将其保存在属性文件中,它是实际状态,但我尝试了许多不同的组合):
BrokerServiceURI=broker:(tcp://0.0.0.0:{0})/{1}?persistent=true&useJmx=false&populateJMSXUserID=false&useShutdownHook=false&deleteAllMessagesOnStartup=false&enableStatistics=true
ConnectionFactoryURI=failover://({0})?initialReconnectDelay=100&timeout=6000
ConnectionFactoryServerURI=tcp://{0}:{1}?keepAlive=true&soTimeout=100&wireFormat.cacheEnabled=false&wireFormat.tightEncodingEnabled=false&wireFormat.maxInactivityDuration=0
BrokerService.startAsync=true
BrokerService.networkConnectorStartAsync=true
BrokerService.keepDurableSubsActive=false
你有线索吗?
我实际上无法从上面提到的描述中告诉你原因,但我可以列出一些在我脑海中新鲜的检查。如果它们对您有效,请确认以下内容。
您能告诉我们您的消费者/生产者/经纪人配置吗?