Search code examples
springspring-integrationspring-jms

Number of Consumer threads for JMS Inbound gateway container are multiplied by 3 times the configured value


JMS messages are available in ativeMQ to be picked by worker, worker configuraiton is as above , we wanted to control how many messages workers can proocess, observed that consumers are always multiplied by 3 times for the configuraiton. from above configuration it is observed that 75 consumers are created and 75 task executions(workerPollerTaskExecutor) are running.

Basically 3 sets of concurrent consumers are being created with same Name(3 threads of senExtractWorkerInGateway.container-1) and same behaviour observed with workerPollerTaskExecutor as well. Can someone help us understanding this why always 3 times multiplied.

Consumers view from ActiveMq Queue

    <int-jms:inbound-gateway
    id="senExtractWorkerInGateway" 
    connection-factory="jmsConnectionFactory"
    correlation-key="JMSCorrelationID"
    request-channel="senExtractProcessingWorkerRequestChannel"
    request-destination-name="senExtractRequestQueue" 
    reply-channel="senExtractProcessingWorkerReplyChannel"
    default-reply-queue-name="senExtractReplyQueue"
    auto-startup="false"
    concurrent-consumers="25"
    max-concurrent-consumers="25"
    max-messages-per-task="1"
    reply-timeout="1200000" 
    receive-timeout="1200000"/>
<bean id="workerPollerTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    <property name="corePoolSize" value="25"/>          
    <property name="maxPoolSize" value="25"/>
    <property name="queueCapacity" value="200"/>
</bean>

Solution

  • The application context was loading 3 times(due to code issue from our end) causing this behaviour. hope this will helpful for others. Thank you.