我在一个springboot应用程序中开发了两个camel路由。first route read xml消息使用jaxb进行转换,处理json数据并将其发送到endrouteuri。
from(strartingRouteUri)
.id("startRoute")
.autoStartup(autoStartup)
.errorHandler(errorHandler())
.transacted("PROPAGATION_MANDATORY")
.unmarshal(getJaxB())
.convertBodyTo(SomeModel.class)
.setExchangePattern(ExchangePattern.InOnly)
.bean(modelMapper)
.bean(processingService, "process")
.marshal(createGsonDataFormat())
.multicast()
.to(endRouteUri).id(endRouteQueueName)
.end()
.end()
.end();
从endrouteuri读取的第二条路径
from(endRouteUri)
.id("secondRoute")
.autoStartup(autoStartup)
.onException(Exception.class)
.id("errorHandler")
.log( LoggingLevel.INFO,"${exception.stacktrace}")
.end()
.transacted("PROPAGATION_MANDATORY")
.unmarshal(createGsonDataFormat())
.setExchangePattern(ExchangePattern.InOnly)
.bean("mapper", "mapToModel")
.bean( "processor")
.end()
.end();
问题发生在第二个路由中,当它尝试从endrouteuri读取时,下面是堆栈跟踪
[org.apache.camel.RuntimeCamelException - org.springframework.transaction.IllegalTransactionStateException: No existing transaction found for transaction marked with propagation 'mandatory']
org.apache.camel.RuntimeCamelException: org.springframework.transaction.IllegalTransactionStateException: No existing transaction found for transaction marked with propagation 'mandatory'
我认为这是造成传播的问题,在这两个路线,我应该如何定义这一点?我需要对两个路由分别实现错误处理和回滚策略
暂无答案!
目前还没有任何答案,快来回答吧!