【发布时间】:2015-04-21 23:21:52
【问题描述】:
我需要在我的 Spring 集成流程中处理某些错误情况。我的流程是使用消息存储并在轮询器上设置错误通道。我曾想过,如果我在错误处理程序中处理消息,则不会发生回滚,但在执行错误流程之前,messageStore remove (delete) 正在回滚。
这是一个重复我的问题的伪流程。
<int:channel id="rollbackTestInput" >
<int:queue message-store="messageStore"/>
</int:channel>
<int:bridge input-channel="rollbackTestInput" output-channel="createException" >
<int:poller fixed-rate="50"
error-channel="myErrorChannel">
<int:transactional />
</int:poller>
</int:bridge>
<int:transformer input-channel="createException" output-channel="infoLogger"
expression="T(GarbageToForceException).doesNotExist()" />
<int:channel id="myErrorChannel">
<int:queue/>
</int:channel>
<!-- JDBC Message Store -->
<bean id="messageStore" class="org.springframework.integration.jdbc.JdbcMessageStore">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
<property name="dataSource" ref="dataSource"/>
此流程将导致无限回滚/轮询循环。如何处理错误而不回滚?
【问题讨论】: