1

我有一个 Java (1.7) 进程,它使用 Spring MDP(Spring 4.2.3 JMS 框架)来读取和处理来自 Websphere MQ 8.1 队列的消息,这些消息在生产中运行良好,几个星期都没有问题;但最近停止使用队列中的消息,直到重新启动(Java 进程已启动并正在运行,并且日志中没有异常/错误)。当我遇到问题时,消息只是在超时后从队列中过期。我必须重新启动该过程的事实表明某处存在问题..因为我只使用 Spring 框架功能,所以我不知道如果再次发生这种情况,我可以做些什么来解决/缩小问题。感谢任何建议采取一些诊断措施..

我注意到,由于网络超时问题,java进程在我遇到问题的那天处理它们时必须多次回滚消息到队列

我在下面附上了 Spring MDP 配置

<!-- WebSphere MQ Connection Factory -->
<bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
    <property name="hostName">
        <value>${mq.wal.queue_hostname}</value>
    </property>
    <property name="port">
        <value>${mq.wal.queue_port}</value>
    </property>
    <property name="queueManager">
        <value>${mq.wal.queue_manager}</value>
    </property>
    <property name="transportType">
        <!-- BINDING MODE -->
        <value>${mq.wal.transport_type}</value>
    </property>
</bean>

<!-- JMS Queue Connection Factory -->
<bean id="jmsQueueConnectionFactory"
    class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory">
        <ref bean="mqConnectionFactory" />
    </property>
</bean>

<!-- IN queue -->
<bean id="in_queue" class="com.ibm.mq.jms.MQQueue"
    depends-on="jmsQueueConnectionFactory">
    <property name="baseQueueManagerName" value="${mq.queue_manager}" />
    <property name="baseQueueName" value="${mq.inqueue}" />
</bean>

<!--  Error handler -->
<bean id="messageErrorHandler" class="coop.mm.wallet.access.service.MessagingErrorHandler"></bean>
<!-- End error handler -->

<!-- Listener containers for INBOUND Queues -->
<!-- listener container -->
<bean id="listener_container"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="jmsQueueConnectionFactory" />
    <property name="destination" ref="in_queue" />
    <property name="messageListener" ref="messageListener" />
    <property name="sessionTransacted" value="true" />
    <property name="concurrency" value="${listener_count}" />
    <property name="errorHandler" ref="messageErrorHandler"/>
</bean>
4

0 回答 0