Spring的DefaultMessageListenerContainer(DMLC)具有concurrentConsumer和taskExecutor属性.taskExecutor bean可以给出corePoolSize属性.那么指定concurrentConsumer和corePoolSize之间的区别是什么?当concurrentConsumer属性被定义时,它意味着Spring将创建指定数量的consumer/messageListeners来处理消息.corePoolSize什么时候出现?
代码段
<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>
Run Code Online (Sandbox Code Playgroud)
根据4.3.6版本,包含负责消息处理taskExecutor的实例。是定义的池中的物理线程数,而是该池中的任务数。我猜这个抽象是为了更灵活的控制而设计的。AsyncMessageListenerInvokercorePoolSizeconcurrentConsumer
| 归档时间: |
|
| 查看次数: |
3731 次 |
| 最近记录: |