как установить фиксированный откат для MQQueueConnectionFactory - PullRequest
0 голосов
/ 11 февраля 2020

Я реализовал для DefaultJmsListenerContainerFactory, он работает нормально, сейчас я ищу реализацию для IBM MQ (MQQueueConnectionFactory ищет решение). Ниже приведен пример фрагмента из DefaultJmsListenerContainerFactory. Ожидается:

FixedBackOff{interval=200, currentAttempts=1, maxAttempts=7}`

DefaultJmsListenerContainerFactory ---->

FixedBackOff{interval=5000, currentAttempts=1, maxAttempts=unlimited}

Я хочу переопределить interval и maxAttempts.

FixedBackOff backOff=new FixedBackOff();
        backOff.setInterval(200);
        backOff.setMaxAttempts(7);
        factory.setBackOff(backOff);
        factory.setErrorHandler(
                  new ErrorHandler() {
                    @Override
                    public void handleError(Throwable t) {
                        logger.error("An error has occurred in the transaction of JMSconnectionFactory");
                    }
                  });

1 Ответ

0 голосов
/ 13 февраля 2020

Как правило, не используйте QueueConnectionFactory или TopicConnectionFactory, поскольку ConnectionFactory (JMS 1.1) является заменой для обоих.

Spring xml пример конфигурации:

<bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQConnectionFactory"
    p:queueManager="${QM_NAME}"
    p:hostName="${QM_HOST_NAME}"
    p:port="${QM_HOST_PORT}"
    p:channel="${QM_CHANNEL}"
    p:clientID="${QM_CLIENT_ID}">
    <property name="transportType">
        <util:constant static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_CM_CLIENT" />
    </property>
</bean>

<bean id="messageListener" class="com.stackowerflow.example.MyMessageListenerStub" />

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"
    p:corePoolSize="5"
    p:maxPoolSize="10"
    p:queueCapacity="25" />

<bean id="backOff" class="org.springframework.util.backoff.FixedBackOff"
    p:interval="5000"
    p:maxAttempts="10" />

<bean id="msgListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"
    p:connectionFactory-ref="mqConnectionFactory"
    p:destinationName="${QM_DESTINATION}"
    p:messageListener-ref="messageListener"
    p:taskExecutor-ref="taskExecutor"
    p:backOff-ref="backOff" />
...