好的,所以仍然忙于将文件用于MySQL文件使用者。我开始遇到某些大文件的错误,并希望将它们发送到另一条路线进行处理。因此,这个想法是一个简单的基于内容的路由器,它将查看文件大小,如果它是一个大文件,将其复制到另一个目录并保留在那里(再一次简单的步骤来了解如何操作)。
所以我开始阅读有关CBR以及如何在我的驼峰上下文中使用简单表达式语言的内容。所以我在camel-context.xml文件中添加了一个CBR,现在我甚至无法运行任何路由。构建失败,并出现以下错误:
Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
Line 48 in XML document from class path resource [META-INF/spring/camel-context.xml] is invalid;
nested exception is org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.
对,所以很明显我在那里得到了一些不好的XML,但对于我的生活,我似乎无法找到问题,也许一些更有经验的骑手可以通过快速查看我的xml文件给我一些建议。
<errorHandler id="defaultEH" type="DefaultErrorHandler">
<redeliveryPolicy
maximumRedeliveries="5"
retryAttemptedLogLevel="WARN"
backOffMultiplier="1"
useExponentialBackOff="true"/>
</errorHandler>
<threadPoolProfile id="myDefaultProfile"
defaultProfile="true"
maxPoolSize="16"/>
<threadPool id="myPool" threadName="Cool" poolSize="4" maxPoolSize="4" maxQueueSize="100"/>
<route handleFault="true">
<from uri="file://c:/CTest/BadFiles?noop=true&recursive=true&delay=3000"/>
<choice>
<when>
<simple>${file:length}<20000000</simple>
<threads executorServiceRef="myPool">
<to uri="bean://fileToSQL"/>
</threads>
</when>
<otherwise>
<to uri="file://c:/CTest/outbox"/>
<stop/>
</otherwise>
</choice>
<!--<to uri="jdbc://timlogdb"/>-->
</route>
我到处查看,根据我的理解,这应该是有效的XML。
答案 0 :(得分:1)
我认为你需要逃避大于签署文本;这是XML限制。 此外,简单的语言要求您在其运算符周围使用空间。所以它应该是
<simple>${file:length} < 20000000</simple>