Как направить файл на основе размера в Apache Camel - PullRequest
0 голосов
/ 26 марта 2012

Хорошо, так что все еще занят работой с файлом для потребителя файла MySQL.Я начал сталкиваться с ошибками с некоторыми большими файлами и хочу отправить их на другой маршрут для обработки.Таким образом, идея заключается в простом контентном маршрутизаторе, который будет смотреть на размер файла и, если это большой файл, скопировать его в другой каталог и оставить там (еще раз простые шаги, чтобы понять, как это сделать).

Поэтому я начал читать о CBR и о том, как использовать простой язык выражений в контексте верблюда.Поэтому я добавил CBR в файл camel-context.xml и теперь не могу даже запускать какие-либо маршруты.Сборка завершается неудачно со следующей ошибкой:

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&amp;recursive=true&amp;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.

1 Ответ

1 голос
/ 26 марта 2012

Я думаю, вам нужно избегать большего, чем знак в тексте;это ограничение XML.Также простой язык требует, чтобы вы использовали пространство вокруг его операторов.Так и должно быть

<simple>${file:length} &lt; 20000000</simple>
...