несколько исполнителей задач интеграции Spring, получающих одно и то же сообщение из очереди JMS - PullRequest
0 голосов
/ 31 августа 2018

Я использую пружинную интеграцию для обработки нескольких файлов из очереди.

Ниже приведена моя конфигурация:

<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"/>
...