Можете ли вы ввести значение из файла параметров конфигурации в атрибут группы разделителей? если да, то как это правильно делать? Благодарность!
Я пытался,
<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'.

мои поиски информации и ответов не были достаточно глубокими. Я обнаружил, что это уже было вложено, и ответил Клаус Ибсен. Пожалуйста, посмотрите, не столкнетесь ли вы с этой потребностью.
Ошибка проверки с целочисленным свойством (верблюд)
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" />
это работает как шарм. спасибо Клаус.
это то, что сработало для меня.
<?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 выдает исключение контекста
Привет, я пытаюсь добиться того же, но импорт xmlns не может разрешить uri
xmlns:prop = "http://camel.apache.org/schema/placeholder"не может разрешить ... любая идея, что не так?