I've an MDP that implements MessageListener interface and overrides its onMessage() method.
Below is the listener configuration done in spring config file:
I'm facing a sporadic issue of MDP not getting invoked when the number of concurrent messages on the message queue increases to which this MDP is listening.
I've not been able to find out a pattern but more than once I observed that when number of "concurrent" messages send on the queue is more than 5, the MDP processes just one or two of those messages and then fails to consume the remaining messages.
If I continue to send more messages on the queue, still MDP does not get invoked.
The only option I'm left with is to restart the server.
I've tried to play around with "concurrentConsumers" and "maxConcurrentConsumers" values but it doesn't help much. For example, I tried with values 10 and 50 respectively, though my MDP was able to process more than 5 concurrent messages, but it then failed to invoke when the number of concurrent messages reached a certain level (which was well less than 50 i.e., less than value of "maxConcurrentConsumers").
Any pointers on what could be the issue and how can I debug the exact cause ?
I'm concerned if there is any criterion by which MDP will fail to invoke when number of concurrent messages on the queue reaches a threshold (in other words, say if number of concurrent messages on the queue exceeds "maxConcurrentConsumers", will Spring container shut down the DMLC to process any further messages) ?
Why does DMLC not process the pending messages in the queue once it has finished processing the messages as defined by "maxConcurrentConsumers" property ?
Any help/guidance/suggestion shall be appreciated.
Best Regards
LB
Below is the listener configuration done in spring config file:
Code:
<bean id="jmsListener_V2_SCH_CT_Res_Queue" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="v2_CT_SCH_RES_WMQQueueConnectionFactory" />
<property name="destination" ref="v2_CT_SCH_RES_WMQQueue" />
<property name="messageListener" ref="ersOrcSvcResMDP"/>
<property name="concurrentConsumers" value="1" />
<property name="maxConcurrentConsumers" value="10" />
</bean>
I've not been able to find out a pattern but more than once I observed that when number of "concurrent" messages send on the queue is more than 5, the MDP processes just one or two of those messages and then fails to consume the remaining messages.
If I continue to send more messages on the queue, still MDP does not get invoked.
The only option I'm left with is to restart the server.
I've tried to play around with "concurrentConsumers" and "maxConcurrentConsumers" values but it doesn't help much. For example, I tried with values 10 and 50 respectively, though my MDP was able to process more than 5 concurrent messages, but it then failed to invoke when the number of concurrent messages reached a certain level (which was well less than 50 i.e., less than value of "maxConcurrentConsumers").
Any pointers on what could be the issue and how can I debug the exact cause ?
I'm concerned if there is any criterion by which MDP will fail to invoke when number of concurrent messages on the queue reaches a threshold (in other words, say if number of concurrent messages on the queue exceeds "maxConcurrentConsumers", will Spring container shut down the DMLC to process any further messages) ?
Why does DMLC not process the pending messages in the queue once it has finished processing the messages as defined by "maxConcurrentConsumers" property ?
Any help/guidance/suggestion shall be appreciated.
Best Regards
LB