Spring集成:出现OutOfMemoryError时JMS丢失消息:PermGen空间错误

Spring集成:出现OutOfMemoryError时JMS丢失消息:PermGen空间错误,spring,spring-integration,Spring,Spring Integration,我丢失了JMS:message-driven channel adapter的spring集成管道流中的JMS消息(文件),尽管适配器设置为事务模式,并且配置了带有RuntimeException的自定义异常类型路由器,这意味着在出现任何运行时异常的情况下(如PermGenError)它将消耗消息,但在我的情况下不会发生 如有任何帮助,我们将不胜感激 从ibm mq获取jms消息,并在转换后将其发送到另一个队列 <bean id="queueTradeIn" class="com.ibm.

我丢失了JMS:message-driven channel adapter的spring集成管道流中的JMS消息(文件),尽管适配器设置为事务模式,并且配置了带有RuntimeException的自定义异常类型路由器,这意味着在出现任何运行时异常的情况下(如PermGenError)它将消耗消息,但在我的情况下不会发生

如有任何帮助,我们将不胜感激

从ibm mq获取jms消息,并在转换后将其发送到另一个队列

<bean id="queueTradeIn" class="com.ibm.mq.jms.MQQueue">
    <constructor-arg value="${queue.name}" />
</bean>

<jms:message-driven-channel-adapter concurrent-consumers="1" id="tradeInputQueueAdaptor" destination="queueTradeIn" channel="topLevelErrorHandlerInputChannel" acknowledge="transacted" />

异常配置: 我正在通过topLevelErrorHandlerInputChannel传递所有消息

<!-- The ErrorHandler passes the message on the input channel to the output channel. -->
<beans:bean id="topLevelErrorHandler" class="com.xxx.ErrorHandler" >
    <beans:property name="errorChannel" ref="errorChannel"/>
    <beans:property name="outputChannel" ref="dataProcessChain"/>
    <beans:property name="throwablesToHandle" >
        <beans:list>
            <beans:value>java.lang.NullPointerException</beans:value>
            <beans:value>org.xml.sax.SAXParseException</beans:value>
            <beans:value>org.dom4j.DocumentException</beans:value>
            <beans:value>com.xxx.DLQMessageException</beans:value>
            <beans:value>java.lang.RuntimeException</beans:value>
        </beans:list>
    </beans:property>
</beans:bean>

<service-activator input-channel="topLevelErrorHandlerInputChannel" ref="topLevelErrorHandler" method="passThrough"/>
<transformer input-channel="errorChannel" method="display" ref="errorMessageConstructor" output-channel="errorLogChannel"/>

<logging-channel-adapter channel="errorLogChannel" id="rejectedLog" expression="'Message passed through!'" level="INFO"/>

java.lang.NullPointerException
org.xml.sax.SAXParseException
org.dom4j.DocumentException
com.xxx.DLQMessageException
java.lang.RuntimeException

您需要显示您的配置;您不应该丢失具有正确配置的流的任何消息(例如,您不应该在流中使用
QueueChannel
s。请查看我的配置,我的管道中只有直接通道,后面是拦截器。错误不是异常。@chrylis-是的,我们正在处理消息驱动通道适配器下游抛出的异常。您需要在
Erro中显示代码。)rHandler
以及
dataProcessChain
errorChannel
的下游配置。捕获可丢弃的
通常不是一个好主意;确保只捕获
异常
。框架不太可能导致内存泄漏。使用诸如YourKit之类的探查器来分析runt输入法。