Java “动态更改属性”;DefaultMessageListenerContainer.concurrentConsumers“;在Spring中使用JMX实现JMS
我要发疯了!我想不出有什么问题,请帮忙 我想在SpringJMS中动态设置concurrentConsumers。以下是我的代码:Java “动态更改属性”;DefaultMessageListenerContainer.concurrentConsumers“;在Spring中使用JMX实现JMS,java,spring,Java,Spring,我要发疯了!我想不出有什么问题,请帮忙 我想在SpringJMS中动态设置concurrentConsumers。以下是我的代码: <bean id="syncHotProductPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="2" /> <prope
<bean id="syncHotProductPool" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="2" />
<property name="maxPoolSize" value="2" />
<property name="queueCapacity" value="2" />
<property name="threadNamePrefix" value="syncHotProductExecutor-" />
<property name="daemon" value="true"/>
</bean>
<bean id="syncHotProductListener" class="com.ngsp.zrb.messageContainer.DynamicMessageListenerContainer">
<property name="connectionFactory" ref="jmsSyncProductFactory" />
<property name="concurrentConsumers" value="2" />
<property name="maxConcurrentConsumers" value="2" />
<property name="destination" ref="syncHotProductQueue" />
<property name="messageListener" ref="syncHotProductReceiver" />
<property name="receiveTimeout" value="10000" />
<property name="taskExecutor" ref="syncHotProductPool" />
<!--0:CACHE_NONE,1:CACHE_CONNECTION,2:CACHE_SESSION,3:CACHE_CONSUMER,4:CACHE_AUTO-->
<property name="cacheLevel" value="3" />
<property name="sessionTransacted" value="true" />
</bean>
}
然后我启动我的tomcat,并将ConcurrentConsumers从1(默认值)设置为8。没关系!但是,当我将ConcurrentConsumers从8设置为1时,队列停止消费消息!为什么
private static final Logger LOGGER = LoggerFactory.getLogger(DynamicMessageListenerContainer.class);
@SuppressWarnings("unused")
@JmxAttribute
private String destinationName;
public String getDestinationName() {
Destination destination = super.getDestination();
if (destination instanceof Queue) {
Queue queue = (Queue) destination;
try {
return queue.getQueueName();
} catch (JMSException e) {
}
}
return null;
}
@JmxOperation
public final void dynamicStop() throws JMSException {
doStop();
}
@JmxOperation
public final void dynamicStart() throws JMSException {
doStart();
}
@JmxOperation
public final void setConcurrentConsumersNum(int i) throws JMSException {
setIdleConsumerLimit(i);
setConcurrentConsumers(i);
}
@JmxOperation
public final int getConcurrentConsumersNum() throws JMSException {
return getConcurrentConsumers();
}