Die DefaultMessageListenerContainer (DefaultMessageListenerContainer) (DMLC) hat concurrentConsumer und taskExecutor Eigentum. Der TaskExecutor-Bean kann die Eigenschaft corePoolSize erhalten. Was ist der Unterschied zwischen der Angabe von concurrentConsumer und corePoolSize? Wenn die Eigenschaft concurrentConsumer definiert ist, bedeutet dies, dass Spring eine bestimmte Anzahl von customer/messageListeners zur Verarbeitung der Nachricht erstellt. Wann kommt corePoolSize ins Bild?Zweck der Eigenschaft taskExecutor in Spring's DefaultMessageListenerContainer
Code-Snippet
<bean id="myMessageListener"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="myQueue" />
<property name="messageListener" ref="myListener" />
<property name="cacheLevelName" value="CACHE_CONSUMER"/>
<property name="maxConcurrentConsumers" value="10"/>
<property name="concurrentConsumers" value="3"/>
<property name="taskExecutor" ref="myTaskExecutor"/>
</bean>
<bean id="myTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >
<property name="corePoolSize" value="100"/>
<property name="maxPoolSize" value="100"/>
<property name="keepAliveSeconds" value="30"/>
<property name="threadNamePrefix" value="myTaskExecutor"/>
</bean>