Стратегия исключения мулов - PullRequest
0 голосов
/ 29 мая 2020

Только в одной конкретной очереди счетчик потребителей Mule JMS достигает 0 и возвращается к значениям по умолчанию через определенный момент времени

Мой вопрос: почему он опускается до 0, а у меня застряло сообщение очередь? Через несколько секунд я обнаружил, что он возвращается к 32 (по умолчанию numberOfConcurrentTransactedRecievers) и обрабатывает сообщение, а затем снова возвращается к 0 потребителям. В чем может быть проблема?

У меня есть другие потребители в том же муле, которые могут обрабатывать чисто без уменьшения количества.

Мои конфигурации:

<!-- 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>

И я вижу ошибку ниже:

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 Ответ

0 голосов
/ 01 июня 2020

Проблема, похоже, в том, что некоторая ошибка запускает повторную доставку сообщения. Когда количество повторных доставок превышает максимальное, возникает ошибка повторной доставки.

Вам следует ознакомиться с конфигурацией повторной доставки соединителя JMS: https://docs.mulesoft.com/mule-runtime/3.9/jms-transport-reference. Затем проверьте стратегию Rollback Exception https://docs.mulesoft.com/mule-runtime/3.9/rollback-exception-strategy, чтобы узнать, как вы можете обрабатывать эти ошибки.

Обратите внимание, что ActiveMQ может иметь свои собственные конфигурации повторной доставки.

...