我尝试使用 grails 中 ActiveMQ 队列中的消息。我已经为连接配置了一些 spring bean,到目前为止一切都很好。
当我尝试设置concurrentConsumers
上述 8 时,问题就开始了。似乎将 8 设置为一个客户端的最大值 - 如果我配置超过 8 个,ActiveMQ 资源管理器仍然显示队列的 8 个使用者。如果我为超过 8 的不同队列配置两个侦听器concurrentConsumers
,则 ActiveMQ oszillate 显示的消费者数量,但总和始终为 8。
我究竟做错了什么?配置示例显示并发消费者最多为 50...
下面是我的配置,写成groovy DSL,我猜看没问题...
jmsFactory(org.apache.activemq.pool.PooledConnectionFactory) { bean ->
bean.destroyMethod = "stop"
connectionFactory = { org.apache.activemq.ActiveMQConnectionFactory cf ->
brokerURL = "tcp://localhost:61616"
}
}
jmsTemplate(org.springframework.jms.core.JmsTemplate) {
connectionFactory = jmsFactory
}
jmsMessageListener(org.springframework.jms.listener.adapter.MessageListenerAdapter, ref("messageService")) {
defaultListenerMethod = "onMessage"
}
jmsContainer(org.springframework.jms.listener.DefaultMessageListenerContainer) {
connectionFactory = jmsFactory
concurrency="10"
concurrentConsumers="15"
destinationName = "demoQueue"
messageListener = jmsMessageListener
transactionManager = ref("transactionManager")
autoStartup = false
}
jmsMessageListener2(org.springframework.jms.listener.adapter.MessageListenerAdapter, ref("messageService")) {
defaultListenerMethod = "onMessage2"
}
jmsContainer2(org.springframework.jms.listener.DefaultMessageListenerContainer) {
connectionFactory = jmsFactory
destinationName = "demoQueue2"
messageListener = jmsMessageListener2
transactionManager = ref("transactionManager")
autoStartup = false
}