int-jpa中的异常处理:updates-outbound-gateway

时间:2016-10-07 10:57:26

标签: spring-integration

我有一个代码

<int-jpa:updating-outbound-gateway 
			auto-startup="true"
			native-query="update Transactions t set t.transaction_Status =   :transactionStatus 
 		where t.bank_Reference_Number = :bankReferenceNumber "
			entity-manager="entityManager" persist-mode="PERSIST"
			use-payload-as-parameter-source="false">
			<int-jpa:transactional />
			<int-jpa:parameter name="transactionStatus" 		expression="payload['transactionStatus']" />
			<int-jpa:parameter name="bankReferenceNumber"		expression="payload['bankReferenceNumber']" />

</int-jpa:updating-outbound-gateway>

我想添加错误通道,以便如果发生某些异常,我可以看到。

2 个答案:

答案 0 :(得分:1)

error-channel用于独立于用户工作的流:消息驱动的通道适配器,例如, <int-jms:message-driven-channel-adapter>,其中一个侦听器容器在无限循环中启动并且它的工作是主动的。

另一个示例是Polling Consumer,它定期运行轮询任务,例如<int-file:inbound-channel-adapter>,或QueueChannel上的任何消费者。而且:它是积极的,独立于你的存在。

<int-jpa:updating-outbound-gateway>是被动组件,因此在发送邮件之前它无法执行任何操作。因此,在这种组件中引起的任何错误都会抛出给调用者,就像在原始Java方法调用中完成一样。

详细了解Reference Manual中的错误处理。

对于您的用例,您应该考虑在上游轮询器中添加error-channel

另一个案例是ExpressionEvaluatingRequestHandlerAdvice,其failureChannel可能会针对特定MessageHandler进行某种错误处理。

答案 1 :(得分:0)

错误通道在某个上游组件上运行(通常是启动流程的任何内容)。

另一种方法是向网关添加ExpressionEvaluatingAdvice;见the reference manual