我有一个像这样的spring集成流程:
1) message-driven-channel-adapter ->
1.1) output-channel connected to -> service-activator -> outbound-channel-adapter (for sending response)
1.2) error-channel connected to -> exception-type-router
1.2.1) message is sent to different queues depending on the exception type using outbound-channel-adapter
我在消息驱动通道适配器中设置了acknowledge =“transacted” . 我想在错误通道之后为特定类型的异常引入回滚 .
首先,我尝试将异常类型路由器输出连接到service-activator . 但我得到例外:
Code:
ref="errorTransformer" method="rollBackMessage"/>
public void rollBackMessage(MessagingException message){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
System.out.println("Message rolled back:"+TransactionAspectSupport.currentTransactionStatus().isRollbackOnly());
}
Exception:
org.springframework.messaging.MessageHandlingException: org.springframework.transaction.NoTransactionException: No transaction aspect-managed TransactionStatus in scope
然后,我尝试使用出站通道适配器表达式,但又得到了另一个异常
Code:
expression="T(org.springframework.transaction.interceptor.TransactionAspectSupport).currentTransactionStatus().setRollbackOnly()"/>
Exception:
org.springframework.messaging.MessageHandlingException: Expression evaluation failed: T(org.springframework.transaction.interceptor.TransactionAspectSupport).currentTransactionStatus().setRollbackOnly()
请建议在此方案中实施回滚 .
本文探讨了在Spring集成流程中实现特定异常回滚的方法。作者通过消息驱动通道适配器处理消息,并试图针对特定异常类型执行回滚操作。文中记录了尝试使用service-activator及出站通道适配器实现回滚时遇到的问题。
4407

被折叠的 条评论
为什么被折叠?



