Атрибут группы Splitter для ввода переменной - PullRequest
0 голосов
/ 18 мая 2018

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

Я пробовал,

<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'.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

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

<?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 Джексона с использованием светокопии XML DSL выдает исключение контекста

0 голосов
/ 21 мая 2018

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

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

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" />

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...