首页 > 解决方案 > 如何为 MQQueueConnectionFactory 设置固定退避

问题描述

我已经DefaultJmsListenerContainerFactory很好地实现了它的工作,现在我正在为 IBM MQ(MQQueueConnectionFactory寻找解决方案)实现下面是来自DefaultJmsListenerContainerFactory. 期待:

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

DefaultJmsListenerContainerFactory ---->

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

我想覆盖intervaland 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");
                    }
                  });

标签: jmsibm-mq

解决方案


通常不要使用 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" />

推荐阅读