Spring Integration:在OutOfMemoryError:PermGen空间错误的情况下,JMS丢失消息

时间:2015-04-06 12:39:52

标签: spring spring-integration

我丢失了JMS消息(文件),它们位于 jms:message-driven-channel-adapter 的spring集成管道流中,尽管适配器设置为事务处理模式和自定义异常类型路由器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"/>

0 个答案:

没有答案