Я использую пружинную интеграцию для обработки нескольких файлов из очереди.
Ниже приведена моя конфигурация:
<si-jms:message-driven-channel-adapter
id="someRegionalInboundAdapter" channel="TP_SomeLogBinaryChannel_AUDIT"
container="someContainer" header-mapper="parentLogHeaderMapper" auto-startup="true" />
<bean id="someContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="concurrentConsumers" value="10" />
<property name="maxConcurrentConsumers" value="20" />
<property name="connectionFactory" ref="cachingGlobalConnectionFactory" />
<property name="destination" ref="someQ" />
<property name="taskExecutor" ref="taskExecutor" />
<property name="transactionManager" ref="transactionManager" />
<property name="autoStartup" value="false" />
<property name="errorHandler" ref="exceptionLogger"/>
</bean>
<task:executor id="taskExecutor" pool-size="20" queue-capacity="20" />
Моя проблема в том, что несколько исполнителей задач получают одно и то же сообщение из MQ.
Я хочу параллельное выполнение, но разные потоки не должны получать одно и то же сообщение из MQ.
Что-то не так с моим конфигом? Как я могу решить эту проблему?
My MQ config
<!-- MQ Configuratipn -->
<Resource auth="Container" brokerName="localhost" brokerURL="tcp://localhost:61616" description="JMS Connection Factory" factory="org.apache.activemq.jndi.JNDIReferenceFactory" name="jms/QM_NH_DV0_0" type="org.apache.activemq.ActiveMQConnectionFactory"/>
<Resource auth="Container" description="JMS queue" factory="org.apache.activemq.jndi.JNDIReferenceFactory" name="jms/Q_INTG_AUDT_PRCS" physicalName="Q_INTG_AUDT_PRCS" type="org.apache.activemq.command.ActiveMQQueue"/>
<Resource auth="Container" description="JMS queue" factory="org.apache.activemq.jndi.JNDIReferenceFactory" name="jms/Q_ERRR_PRCS" physicalName="Q_ERRR_PRCS" type="org.apache.activemq.command.ActiveMQQueue"/>