开始是这样的:
<bean id="dataImportMQListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="dataImportMQ" /> <property name="messageListener" ref="dataImportMQListener" /> </bean>
实际只有一个消费者,消息处理是串行的, 处理完一个才能处理下一个。 如果处理过程中憋死的话,就完蛋了,无法处理后续的消息
3个消息的话,过程是这样的: dataImportMQListenerContainer-1 start.. dataImportMQListenerContainer-1 end.. dataImportMQListenerContainer-1 start.. dataImportMQListenerContainer-1 end.. dataImportMQListenerContainer-1 start.. dataImportMQListenerContainer-1 end..
后改成这样,多加一个参数
<bean id="dataImportMQListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="dataImportMQ" /> <property name="messageListener" ref="dataImportMQListener" /> <property name="concurrentConsumers" value="2"/> </bean>
这里配置成两个消费者,
3个消息的话,过程是这样的: dataImportMQListenerContainer-1 start.. dataImportMQListenerContainer-2 start.. dataImportMQListenerContainer-1 end.. dataImportMQListenerContainer-2 end.. dataImportMQListenerContainer-1 start.. dataImportMQListenerContainer-1 end..
这才是真正的并行处理。
|