Параметр вставки атрибута группы разделителя

Можете ли вы ввести значение из файла параметров конфигурации в атрибут группы разделителей? если да, то как это правильно делать? Благодарность!

Я пытался,

<split streaming = "true" >
<tokenize token = "\n" group = "{{noOfLines}}" />
<log message = "Split Group Body: ${body}"/>
    <to uri = "bean:extractHeader" />
    <to id = "acceptedFileType" ref = "pConsumer" /> 
</split>

<split streaming = "true" >
<tokenize token = "\n" group = {{noOfLines}} />
<log message = "Split Group Body: ${body}"/>
    <to uri = "bean:extractHeader" />
    <to id = "acceptedFileType" ref = "pConsumer" /> 
</split>

Что я делаю неправильно?

ERROR:  'Open quote is expected for attribute "group" associated with an  element type  "tokenize".

<tokenize token = "\n" group = "<simple>${properties:noOfLines:500}</simple>" /> 
ERROR:  'The value of attribute "group" associated with an element type "tokenize" must not contain the '<' character.'

            <tokenize token = "\n" group = "${properties:noOfLines:500}" /> 

Caused by: org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '${properties:noOfLines:500}' is not a valid value for 'integer'.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
238
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

мои поиски информации и ответов не были достаточно глубокими. Я обнаружил, что это уже было вложено, и ответил Клаус Ибсен. Пожалуйста, посмотрите, не столкнетесь ли вы с этой потребностью.

Ошибка проверки с целочисленным свойством (верблюд)

http://camel.apache.org/using-propertyplaceholder.html

в разделе «Использование заполнителей свойств для любого типа атрибута в XML DSL»

вот что я сделал, следуя этим инструкциям.

добавлено пространство имен префикса свойства xmlns: prop = "http://camel.apache.org/schema/placeholder"

затем изменил атрибут tokenize

<tokenize token = "\n" prop:group = "noOfLines" />

Я использую заполнитель свойства

<cm:property-placeholder persistent-id = "com.digital.passthru.core" />

это работает как шарм. спасибо Клаус.

Привет, я пытаюсь добиться того же, но импорт xmlns не может разрешить uri xmlns:prop = "http://camel.apache.org/schema/placeholder" не может разрешить ... любая идея, что не так?

Fede E. 19.09.2018 15:49

это то, что сработало для меня.

<?xml version = "1.0" encoding = "UTF-8"?>
    <blueprint
      xmlns = "http://www.osgi.org/xmlns/blueprint/v1.0.0"
      xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
      xmlns:prop = "http://camel.apache.org/schema/placeholder"
      xmlns:camel = "http://camel.apache.org/schema/blueprint"
      xmlns:cm = "http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
      xsi:schemaLocation = "
           http://www.osgi.org/xmlns/blueprint/v1.0.0 
           http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
           http://camel.apache.org/schema/blueprint 
           http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">

    <cm:property-placeholder persistent-id = "com.ge.digital.passthru.core" />

    <bean id = "deadLetterErrorHandler" class = "org.apache.camel.builder.DeadLetterChannelBuilder">
        <property name = "deadLetterUri" value = "${deadLetterQueue}"/>
        <property name = "redeliveryPolicy" ref = "redeliveryPolicyConfig"/>
        <property name = "useOriginalMessage" value = "true" />
    </bean>

    <bean id = "redeliveryPolicyConfig" class = "org.apache.camel.processor.RedeliveryPolicy">
        <property name = "maximumRedeliveries" value = "3"/>
        <property name = "redeliveryDelay" value = "5000" />

    </bean>

...

<camelContext     
  id = "com.ge.digital.passthru.coreCamelContext"
  trace = "true"
  xmlns = "http://camel.apache.org/schema/blueprint"
  allowUseOriginalMessage = "false"
  streamCache = "true"
  errorHandlerRef = "deadLetterErrorHandler" >

...

<route 
    id = "core.predix.accept.file.type.route"
    autoStartup = "true" >
    <from uri = "{{fileEntranceEndpoint}}" />
    <convertBodyTo type = "java.lang.String" />
    <split streaming = "true" strategyRef = "csvAggregationStrategy">
    <tokenize token = "\n" />
      <process ref = "toCsvFormat" />     <!-- passthru only we do not allow embedded commas in numeric data -->
    </split>
    <log message = "CSV body: ${body}" loggingLevel = "INFO"/>
    <choice>
        <when>
            <simple>${header.CamelFileName} regex '^.*\.(csv|CSV|txt|gpg)$'</simple>
            <log message = "${file:name} accepted for processing..." />
            <choice>
              <when>
                <simple>${header.CamelFileName} regex '^.*\.(CSV|txt|gpg)$'</simple>
                <setHeader headerName = "CamelFileName">
            <!--    <simple>${file:name.noext}.csv</simple> -->  <!-- file:name.noext.single -->
                    <simple>${file:name.noext.single}.csv</simple>
                </setHeader>
                <log message = "${file:name} changed file name." />                   
              </when>
            </choice>
            <split streaming = "true" >
            <tokenize token = "\n" prop:group = "noOfLines" />
            <log message = "Split Group Body: ${body}"/>
                <to uri = "bean:extractHeader" />
                <to id = "acceptedFileType" ref = "predixConsumer" /> 
            </split>
            <to uri = "bean:extractHeader?method=cleanHeader"/>
        </when>
        <otherwise>  
            <log message = "${file:name} is an unknown file type, sending to unhandled repo." loggingLevel = "INFO" />
            <to uri = "{{unhandledArchive}}" />
        </otherwise>
    </choice>
</route>

... а noOfLines - это свойство

Теперь все это в порядке, как я выяснил, тоже занимаясь этим. перейдите по ссылке ниже для заказа компонентов Camel в XML DSL

Camel DataFormat Jackson с использованием Blueprint XML DSL выдает исключение контекста

Другие вопросы по теме