0
votes

On one particular queue alone the Mule JMS consumer count goes to 0 and comes back to default numbers after a point in time

My question is, why is it going down to 0 and I have message stuck in the queue? After few moments I find it comes back to 32 (default numberOfConcurrentTransactedRecievers) and processes the message and then again goes back to 0 consumers. What could be the problem?

I've other consumers in the same mule which are able to process cleanly without the count reducing.

My Configs:

<!-- ActiveMQ Connection factory -->
<spring:bean id="domainConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" lazy-init="true">
    <spring:property name="brokerURL" value="tcp://78.99.88.72:61616?jms.prefetchPolicy.all=2&amp;jms.useAsyncSend=true&amp;socketBufferSize=131072" />
    <spring:property name="redeliveryPolicy" ref="domainRedeliveryPolicy" />
</spring:bean>

<!-- amqExceptionConnectionFactory Connection factory -->
<spring:bean id="amqExceptionConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" lazy-init="true">
    <spring:property name="brokerURL" value="failover:(${domain.amq.failover.url}?jms.prefetchPolicy.all=2)" />
    <spring:property name="redeliveryPolicy" ref="domainRedeliveryPolicy" />
</spring:bean>
<jms:activemq-connector 
    name="com.KKT.jmsConnector" 
    username="${domain.amq.user.id}" 
    password="${domain.amq.user.password}" 
    connectionFactory-ref="pooledConnectionFactory"
    validateConnections="true" 
    numberOfConcurrentTransactedReceivers="32"
    acknowledgementMode="AUTO_ACKNOWLEDGE"  
    persistentDelivery="false" 
    doc:name="AMQ Connector for KKTInterface" 
    specification="1.1">
    <receiver-threading-profile maxThreadsActive="32" poolExhaustedAction="WAIT"/>
    <dispatcher-threading-profile maxThreadsActive="128" poolExhaustedAction="WAIT"/>
    <reconnect count="15" frequency="5000" blocking="true"/>
</jms:activemq-connector>

And I see the below error:

mule.log.5:2020-05-29 20:24:49,392 [ERROR] KKT.router [ActiveMQ Session Task-6] | ed938f60-a1d8-11ea-8ad7-525400aef612: KKT Interface: Unrecoverable Error: Please check ASAP: org.mule.transport.jms.redelivery.MessageRedeliveredException: "Message with id "ID:localhost-35511-1590775568949-1:1:162:1:3367" has been redelivered 1 times on endpoint "jms://com.KKT.router.inbox", which exceeds the maxRedelivery setting of 0 on the connector "com.KKT.router.jmsConnector".
mule.log.5:2020-05-29 20:24:49,216 [ERROR] exception.CatchMessagingExceptionStrategy [ActiveMQ Session Task-5] |
mule.log.5:2020-05-29 20:24:49,216 [ERROR] exception.CatchMessagingExceptionStrategy [ActiveMQ Session Task-4] |
mule.log.9:2020-05-29 20:24:32,753 [ERROR] exception.CatchMessagingExceptionStrategy [ActiveMQ Session Task-57] |
mule.log.9:2020-05-29 20:24:32,753 [ERROR] KKT.router [ActiveMQ Session Task-57] | db927d80-a1d8-11ea-8ad7-525400aef612: KKT Interface: Unrecoverable Error: Please check ASAP: org.mule.api.service.FailedToQueueEventException: Interrupted while queueing event for "SEDA Stage com.KKT.router.requestGateway.stage1".
1
Do you mean the redelivery count? Please in addition to your question add the configurations, Mule version, ActiveMQ version, etc.aled
@JustinBertram : My question is, why is it going down to 0 and I have message stuck in the queue. After few moments when I stop my load test, I find it comes up to 32 (default numberOfConcurrentTransactedRecieverrs) and processes the message. What could be the problem. I've other consumers in the same mule which are able to process cleanly without the count reducingMahesh R
Okay, I missed that. Will surely follow itMahesh R
@aled: I've posted the detailsMahesh R
@JustinBertram : Any technical suggestions?Mahesh R

1 Answers

0
votes

The issue seems to be that some error is triggering a redelivery of the message. When the redelivery count exceeds the maximum then you get a redelivery error.

You should get familiar with the JMS connector redelivery configuration: https://docs.mulesoft.com/mule-runtime/3.9/jms-transport-reference. Then check the Rollback Exception strategy https://docs.mulesoft.com/mule-runtime/3.9/rollback-exception-strategy on how you can handle those errors.

Note that ActiveMQ may have its own redelivery configurations.