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